版權聲明:本文為 走錯路的程序員 原創文章,歡迎轉載。 https://blog.csdn.net/phker/article/details/78612974
搞sqlsever 好多年, 從來沒鎖過表, 今天終於遇到了..
幸好是開發期.生產期就麻煩了.
百度了一下.
后來解決了.
需要兩個工具, 一個是SQLServer自帶的manage 客戶端
這個工具, 用來查看一些當時的運行狀態.和干掉進程.
但是這個工具只能查看部分哪個表被鎖住了. 也無法知道是哪個進程和sql導致了鎖進程. 只能查看一些其它的信息.
至於如何查看死鎖的表, 需要用到下面的sql. 然后根據查出來的 進程id 去上面的工具中
查看詳細信息.. 可以查看到引起死鎖的SQL
查看被鎖表:
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type=’OBJECT’
spid 鎖表進程
tableName 被鎖表名
解鎖:
declare @spid int
Set @spid = 92 –鎖表進程
declare @sql varchar(1000)
set @sql=’kill ‘+cast(@spid as varchar)
exec(@sql)
當然也可以在活動監視器里面 結束掉進程.
今天無意中發現, 活動監視器里面也能看到一部分, 阻塞信息.
圖片中的, 這個就被63號進程阻塞住了.
---------------------
作者:走錯路的程序員
來源:CSDN
原文:https://blog.csdn.net/phker/article/details/78612974
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
