程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> sqlserver進程死鎖關閉的方法

sqlserver進程死鎖關閉的方法

編輯:關於SqlServer

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

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

查詢後會返回一個包含spid和tableName列的表.

其中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:有些時候強行殺掉進程是比較危險的,所以最好可以找到執行進程的主機,在該機器上關閉進程.

以上所述是小編給大家介紹的sqlserver進程死鎖關閉的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved