啟動SQLServer的死結檢查
來源:互聯網
上載者:User
server|sqlserver 對於資料庫死結,通常可以通過TRACE FLAG 1204、1205、1206,檢查ERRORLOG裡面的輸出,和分析SQLTRACE的執行內容判斷死結問題的來由。
TRACEON函數的第三個參數設定為-1,表示不單單針對當前connection,而是針對所有包括未來建立
的connection。這樣,才夠完全,否則只是監視當前已經建立的資料庫連接了。
執行下面的話可以把死結記錄到Errorlog中:
dbcc traceon (1204, 3605, -1)
go
dbcc tracestatus(-1)
go
得到的輸出為:
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
TraceFlag Status
--------- ------
1204 1
1205 1
3605 1
(所影響的行數為 3 行)
DBCC 執行完畢。如果 DBCC 輸出了錯誤資訊,請與系統管理員聯絡。
此後,你可以查看資料庫的例行日誌,每隔一段時間,資料庫都會檢查死結,日誌文本如下所示:
2004-01-16 18:34:38.50 spid4 ----------------------------------
2004-01-16 18:34:38.50 spid4 Starting deadlock search 1976
2004-01-16 18:34:38.50 spid4 Target Resource Owner:
2004-01-16 18:34:38.50 spid4 ResType:LockOwner Stype:'OR' Mode: U SPID:55 ECID:0 Ec:(0xAA577570) Value:0x4c25cba0
2004-01-16 18:34:38.50 spid4 Node:1 ResType:LockOwner Stype:'OR' Mode: U SPID:55 ECID:0 Ec:(0xAA577570) Value:0x4c25cba0
2004-01-16 18:34:38.50 spid4 Node:2 ResType:LockOwner Stype:'OR' Mode: U SPID:71 ECID:0 Ec:(0xABF07570) Value:0x9bd0ba00
2004-01-16 18:34:38.50 spid4
2004-01-16 18:34:38.50 spid4 -- next branch --
2004-01-16 18:34:38.50 spid4 Node:2 ResType:LockOwner Stype:'OR' Mode: U SPID:71 ECID:0 Ec:(0xABF07570) Value:0x9bd0ba00
2004-01-16 18:34:38.50 spid4
2004-01-16 18:34:38.50 spid4
2004-01-16 18:34:38.50 spid4 End deadlock search 1976 ... a deadlock was not found.
2004-01-16 18:34:38.50 spid4 ----------------------------------
附錄:
DBCC TRACEON
開啟(啟用)指定的跟蹤標記。
注釋
跟蹤標記用於自訂某些控制 Microsoft® SQL Server? 操作方式的特性。跟蹤標記在伺服器中
一直保持啟用狀態,直到通過執行 DBCC TRACEOFF 語句對其禁用為止。在發出 DBCC TRACEON
語句之前,連入到伺服器的新串連看不到任何跟蹤標記。一旦發出該語句,該串連就能看到服務
器中當前啟用的所有跟蹤標記(即使這些標記是由其它串連啟用)。
跟蹤標記
跟蹤標記用於臨時設定伺服器的特定特徵或關閉特定行為。如果啟動 Microsoft® SQL Server
時設定了跟蹤標記 3205,將禁用磁帶驅動程式的硬體壓縮。跟蹤標記經常用於診斷效能問題,
或調試預存程序或複雜的電腦系統。
下列跟蹤標記在 SQL Server 中可用。
跟蹤標記
描述
1204
返回參與死結的鎖的類型以及當前受影響的命令。
實際上可以在“錯誤 1000 -1999”中找到他們:
1204
19
SQL Server 此時無法擷取 LOCK 資源。請在活動使用者數較少時重新運行您的語句,或者請求系統管理員檢查 SQL Server 鎖和記憶體配置。
1205
13
事務(進程 ID %1!)與另一個進程已被死結在資源 {%2!} 上,且該事務已被選作死結犧牲品。請重新運行該事務。
1206
18
交易管理員已取消了分散式交易。