??吹剿梨i的問題,一般都是KILL進程,但如果不查出引起死鎖的原因,死鎖會時常發生 可以通過查找引起死鎖的的操作,就可以方便的解決死鎖,現將日常解決問題的方法總結,也許對大家有幫助 1\死鎖發生時,通過如下語法,查詢出引起死鎖的操作 use master go declare @spid int,@bl int DECLARE s_cur CURSOR FOR select 0 ,blocked from (select * from sysprocesses where blocked>0 ) a where not exists(select * from (select * from sysprocesses where blocked>0 ) b where a.blocked=spid) union select spid,blocked from sysprocesses where blocked>0 OPEN s_cur FETCH NEXT FROM s_cur INTO @spid,@bl WHILE @@FETCH_STATUS = 0 begin if @spid =0 select '引起javascript:;" onClick="javascript:tagshow(event, '%CA%FD%BE%DD%BF%E2');" target="_self">數據庫死鎖的是: '+ CAST(@bl AS VARCHAR(10)) + '進程號,其執行的SQL');" target="_self">SQL語法如下' else select '進程號SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '進程號SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其當前進程執行的SQL語法如下' DBCC INPUTBUFFER (@bl ) FETCH NEXT FROM s_cur INTO @spid,@bl end CLOSE s_cur DEALLOCATE s_cur exec sp_who2 2\查找程序/數據庫,此t_sql語法在什么地方使用 3\分析找到的,并解決問題 EG: /* ------------------------------------------------------- 引起數據庫死鎖的是: 71進程號,其執行的SQL語法如下 EventType Parameters EventInfo -------------- ---------- ------------------------------------------------ Language Event 0 select * from test insert test values(1,2) (所影響的行數為 1 行) DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。 ------------------------------------------------------------------------------ 進程號SPID:64被進程號SPID:71阻塞,其當前進程執行的SQL語法如下 EventType Parameters EventInfo -------------- ---------- ------------------------------------------------ Language Event 0 select * from test insert test values(1,2) (所影響的行數為 1 行) DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。 ------------------------------------------------------------------------------ 進程號SPID:65被進程號SPID:64阻塞,其當前進程執行的SQL語法如下 EventType Parameters EventInfo -------------- ---------- -------------------------------------------------------------------------------------------------- Language Event 0 begin tran select * from test with (holdlock) waitfor time '12:00' select * from test commit (所影響的行數為 1 行) DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。 ------------------------------------------------------------------------------ 進程號SPID:73被進程號SPID:64阻塞,其當前進程執行的SQL語法如下 EventType Parameters EventInfo -------------- ---------- -------------------------------------------------------------------------------------------------- Language Event 0 begin tran select * from test with (holdlock) waitfor time '12:00' select * from test commit (所影響的行數為 1 行) DBCC 執行完畢。如果 DBCC 輸出了錯誤信息,請與系統管理員聯系。 */ |
原文轉自:http://www.anti-gravitydesign.com