SQL Server清除死鎖

2021-09-29 21:25:41 字數 651 閱讀 3903

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 『***』

***就是spid列的程序,檢索後會列出很多資訊,其中就包含主機名.

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

關閉程序

declare @spid int

set @spid = *** --鎖表程序

declare @sql varchar(1000)

set @sql='kill '+cast(@spid as varchar)

exec(@sql)

ps:有些時候強行殺掉程序是比較危險的,所以最好可以找到執行程序的主機,在該機器上關閉程序.在這裡插入**片

sql server死鎖解決方案 和 清除快取

死鎖解決方案 問題場景 在客戶那碰到乙個操作卡死的現象 問題解決 1 如何掛鉤是死鎖問題 通過 跟蹤,發現是指執行乙個sql語句超時,因此猜想可能是表鎖住了 select request session id spid,object name resource associated entity i...

sqlserver死鎖阻塞

create proc p lockinfo kill lock spid bit 1,是否殺掉死鎖的程序,1 殺掉,0 僅顯示 show spid if nolock bit 1 如果沒有死鎖的程序,是否顯示正常程序資訊,1 顯示,0 不顯示 as declare count int,s nvar...

模擬 SQLSERVER 死鎖

環境 sqlserver 2008 事務 程序 id n 與另乙個程序被死鎖在鎖資源上,並且已被選作死鎖犧牲品。請重新執行 死鎖原理 如兩個任務 任務1,已經鎖定r1,再進行請求r2任務2,已經鎖定r2,再進行請求r1導致兩個任務都進入了阻塞。sqlserver會選擇乙個進行犧牲。了解了原理後,來段...