文章詳情頁
Sqlserver之死鎖查詢以及批量解鎖的實現方法
瀏覽:3日期:2023-09-25 20:57:30
目錄Sqlserver死鎖查詢以及批量解鎖方法Sqlserver死鎖查詢以及解鎖方法sqlserver 批量kill死鎖解決sqlserver死鎖問題創造死鎖解決方法總結Sqlserver死鎖查詢以及批量解鎖方法Sqlserver死鎖查詢以及解鎖方法
(1)下面是查詢死鎖進程
select?request_session_id spid, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(死鎖進程id)OBJECT_NAME(resource_associated_entity_id) tableName ?(死鎖進程名稱)from sys.dm_tran_locks?where resource_type='OBJECT' ? ? ? ? ? ? ? ? ? ? ? ? ?(數據類型所有)(2)殺死死鎖進程
declare @spid int ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//聲明idSet ? ? @spid = 62 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //設置死鎖iddeclare @sql varchar(1000) ? ? ? ? ? ? ? ? ? ? ? ? ? ? //聲明sql?set ? ? @sql='kill '+cast(@spid as varchar) ? ? ? ? ? ?//設置 kill掉死鎖進程exec ? ?(@sql) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //執行或者
kill 62;
sqlserver 批量kill死鎖select 'kill '+CONVERT(varchar,request_session_id) ,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_lockswhere? ?resource_type='OBJECT'解決sqlserver死鎖問題創造死鎖-- 開始事務BEGIN TRANSACTION?update job set create_user='0000' where WAITFOR DELAY '02:00'-- 執行查詢select * from job where id = '1';解決方法方法一
打開sqlserver管理工具,新建sql查詢tab執行select * from master.sys.sysprocesses where dbid=db_id(‘數據庫名’)然后會查詢到具體有哪個在連接到此數據庫直接KILL spid的具體數值就可以了方法二
-- 首先查詢select ? ?? ? request_session_id spid, ??? ? OBJECT_NAME(resource_associated_entity_id) tableName ? ?from ? ?? ? sys.dm_tran_locks ??where ? ?? ? resource_type='OBJECT'?-- 然后執行?? ?kill 67;注意事項:
有些用戶連接可以在kill掉后自動重建,但期間有一段時間,如果碰到這種情況,需要在執行完kill命令后立即執行脫機操作
總結以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。
排行榜
