熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL語言 >> 正文

通過查找引起死鎖的的操作即可解決死鎖[1]

2013-11-13 12:39:14  來源: SQL語言 

  說道死鎖問題的解決一般情況下我們都是選擇KILL進程但如果不查出引起死鎖的原因死鎖的現象則會頻繁出現其實只要通過查找引起死鎖的的操作就可以方便的解決死鎖

  具體的解決方法如下

  再死鎖發生時我們可以通過下面的語法查詢到引起死鎖的操作

  use master
  go
  declare @spid int@bl int
  DECLARE s_cur CURSOR FOR
  select blocked
  from (select * from sysprocesses where blocked> ) a
  where not exists(select * from (select * from sysprocesses where blocked> ) b
  where ablocked=spid)
  union select spidblocked from sysprocesses where blocked>
  OPEN s_cur
  FETCH NEXT FROM s_cur INTO @spid@bl
  WHILE @@FETCH_STATUS =
  begin
  if @spid =
  select 引起數據庫死鎖的是: + CAST(@bl AS VARCHAR()) + 進程號其執行的SQL語法如下
  else
  select 進程號SPID+ CAST(@spid AS VARCHAR())+ + 進程號SPID+ CAST(@bl AS VARCHAR()) +阻塞其當前進程執行的SQL語法如下
  DBCC INPUTBUFFER (@bl )
  FETCH NEXT FROM s_cur INTO @spid@bl
  end
  CLOSE s_cur
  DEALLOCATE s_cur
  exec sp_who

  然後查找程序/數據庫此t_sql語法具體在什麼地方使用

  分析已經找到的解決問題

  EG
  /*

[]  []  


From:http://tw.wingwit.com/Article/program/SQL/201311/16323.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.