啟動 SQLServer 的死鎖檢查
|
Report Date
:
??
|
Prepared by
:
????
鄭昀
|
|
Article last modified on
|
|
|
The information in this article applies to:
ü
???????
Microsoft SQL Server 2000,7.0
|
|
陳述
:
對于數據庫死鎖,通??梢酝ㄟ^
TRACE FLAG 1204
、
1205
、
1206
,檢查
ERRORLOG
里面的輸出,和分析
SQLTRACE
的執行上下文判斷死鎖問題的來由。
TRACEON
函數的第三個參數設置為
-1
,表示不單單針對當前
connection
,而是針對所有包括未來建立的
connection
。這樣,才夠完全,否則只是監視當前已經建立的數據庫連接了。
執行下面的話可以把死鎖記錄到 Errorlog 中:
|
dbcc traceon (1204, 3605, -1)
|
??
?
得到的輸出為:
|
DBCC
執行完畢。如果
DBCC
輸出了錯誤信息,請與系統管理員聯系。
(所影響的行數為
3
行)
DBCC
執行完畢。如果
DBCC
輸出了錯誤信息,請與系統管理員聯系。
|
??
???
?
?
?
?
此后,你可以查看數據庫的例行日志,每隔一段時間,數據庫都會檢查死鎖,日志文本如下所示:
|
2004-01-16 18:34:38.50 spid4???? ----------------------------------
?
2004-01-16 18:34:38.50 spid4???? Target Resource Owner:
|
?
?
?
?
?
?
?
?
?
以下實際檢測到死鎖的日志輸出,來自于一份非常棒的講義“
Log Shipping in SQL Server 2000.ppt
”,作者是
Ron Talmage
:
Deadlock encountered .... Printing deadlock information
Wait-for graph
Node:1
KEY: 7:1977058079:1 (f600d
Grant List::
??
Owner:0x19090e20 Mode: X
???????
Flg:0x0 Ref:0 Life:02000000 SPID:54 ECID:0
??
SPID: 54 ECID: 0 Statement Type: SELECT Line #: 1
??
Input Buf: Language Event: Select * From Authors
Requested By:
???
ResType:LockOwner Stype:'OR' Mode:
Node:2
KEY: 7:1977058079:1 (f
Grant List::
??
Owner:0x19091000 Mode: X
???????
Flg:0x0 Ref:0 Life:02000000 SPID:53 ECID:0
??
SPID: 53 ECID: 0 Statement Type: SELECT Line #: 1
??
Input Buf: Language Event: Select * From Authors
Requested By:
???
ResType:LockOwner Stype:'OR' Mode:
Victim Resource Owner:
ResType:LockOwner Stype:'OR' Mode:
|
?
這份講義的下載地址:
http://www.sqlpass.org/resources/sessions/summit2002/S231_S348.ppt
數據庫管理員必看哦。
?
附錄:
DBCC TRACEON
打開(啟用)指定的跟蹤標記。
注釋
跟蹤標記用于自定義某些控制 Microsoft? SQL Server? 操作方式的特性。跟蹤標記在服務器中一直保持啟用狀態,直到通過執行 DBCC TRACEOFF 語句對其禁用為止。在發出 DBCC TRACEON 語句之前,連入到服務器的新連接看不到任何跟蹤標記。一旦發出該語句,該連接就能看到服務器中當前啟用的所有跟蹤標記(即使這些標記是由其它連接啟用)。
跟蹤標記
跟蹤標記用于臨時設置服務器的特定特征或關閉特定行為。例如,如果啟動 Microsoft? SQL Server? 時設置了跟蹤標記 3205 ,將禁用磁帶驅動程序的硬件壓縮。跟蹤標記經常用于診斷性能問題,或調試存儲過程或復雜的計算機系統。
下列跟蹤標記在 SQL Server 中可用。
|
跟蹤標記
|
描述
|
|
1204 |
返回參與死鎖的鎖的類型以及當前受影響的命令。 |
實際上可以在“錯誤
1000
|
1204 |
19 |
SQL Server 此時無法獲取 LOCK 資源。請在活動用戶數較少時重新運行您的語句,或者請求系統管理員檢查 SQL Server 鎖和內存配置。 |
|
1205 |
13 |
事務(進程 ID %1! )與另一個進程已被死鎖在資源 {%2!} 上,且該事務已被選作死鎖犧牲品。請重新運行該事務。 |
|
1206 |
18 |
事務管理器已取消了分布式事務。 |
?
Writen by zhengyun.NoJunk(at)tomosoft.dot.com
Disclaimers
:
本文檔所包含的信息代表了在發布之日,
ZhengYun
對所討論問題的當前看法,
Zhengyun
不保證所給信息在發布之日以后的準確性。
本文檔僅供參考。對本文檔中的信息,
Zhengyun
不做任何明示或默示的保證。
用戶必須遵守所有適用的版權法。在不對版權法所規定的權利加以限制的情況下,如未得到
zhengyun
和
CSDN.Net
明確的書面許可,不得出于任何目的、以任何形式或手段(電子的、機械的、影印、錄制等等)復制、傳播本文的任何部分,也不得將其存儲或引入到檢索系統中。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=12745
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

