sqlserver如何關閉死鎖進程.


1.首先我們需要判斷是哪個用戶鎖住了哪張表.

 

--查詢被鎖表
select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   
from   sys.dm_tran_locks where resource_type='OBJECT'

 

查詢后會返回一個包含spidtableName列的表.

其中spid是進程名,tableName是表名.

 

2.了解到了究竟是哪個進程鎖了哪張表后,需要通過進程找到鎖表的主機.

--查詢主機名
exec sp_who2 'xxx'

xxx就是spid列的進程,檢索后會列出很多信息,其中就包含主機名.

 

3.通過spid列的值進行關閉進程.

--關閉進程
declare @spid  int 
Set @spid  = xxx --鎖表進程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid  as varchar)
exec(@sql)

 

PS:有些時候強行殺掉進程是比較危險的,所以最好可以找到執行進程的主機,在該機器上關閉進程.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM