2008-12-09 46 views
6

我想跟蹤我們的SQL 2005數據庫(64位)中發生的死鎖。我們目前沒有啓用快照隔離。Sql服務器死鎖對象ID太大

我打開tf-1204並收到下面的輸出。

從這個輸出我能夠確定節點1是一個存儲過程,選擇數據,只修改#temp表中的值。

節點2是另一個存儲過程在一行數據上進行簡單的基於主鍵的更新。

我無法確定的是此處爭用的實際資源。 10:72057594060734464和10:72057594038910976的鍵允許我確定數據庫,但這些對象ID不能用object_name解析。實際上,它們應該是int值,所以我不確定這些大數字來自哪裏。

在研究這個問題時,我能夠從活動監視器中獲得類似的值作爲對象ID。

如何解決這些對象標識符?

這裏是僵局TF-1204輸出:

 
2008-12-05 07:48:28.19 spid4s  ---------------------------------- 
2008-12-05 07:48:28.19 spid4s  Starting deadlock search 634 
2008-12-05 07:48:28.19 spid4s  Target Resource Owner: 
2008-12-05 07:48:28.19 spid4s  ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 
2008-12-05 07:48:28.19 spid4s  0:Insert new node: Node:1  ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 
2008-12-05 07:48:28.19 spid4s  1:SearchOR Considering new blocker - task: 0000000000EC5198, Worker 00000000C89881C0 
2008-12-05 07:48:28.19 spid4s  2:Insert new node: Node:2  ResType:LockOwner Stype:'OR'Xdes:0x00000000808F1A80 Mode: S SPID:79 BatchID:0 ECID:0 TaskProxy:(0x0000000129E82598) Value:0x1063d000 
2008-12-05 07:48:28.19 spid4s  3:SearchOR Considering new blocker - task: 0000000000C3FC18, Worker 00000000F847C1C0 
2008-12-05 07:48:28.19 spid4s  4:InsertKnown Cycle found between old res owner: [ ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980] and new res owner [ ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980] 
2008-12-05 07:48:28.19 spid4s  4:InsertKnown search result: Deadlock found (blocking owner is on a stack) 
2008-12-05 07:48:28.19 spid4s  3:SearchOR search result: Deadlock found (cycle on this level or before) 
2008-12-05 07:48:28.19 spid4s  1:SearchOR search result: Deadlock found (cycle on this level or before) 
2008-12-05 07:48:28.19 spid4s  
2008-12-05 07:48:28.19 spid4s  Deadlock cycle was encountered .... verifying cycle 
2008-12-05 07:48:28.19 spid4s  0:Insert new node: Node:1  ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 Cost:(0/1544) 
2008-12-05 07:48:28.19 spid4s  1:SearchOR Considering new blocker - task: 0000000000EC5198, Worker 00000000C89881C0 
2008-12-05 07:48:28.19 spid4s  2:Insert new node: Node:2  ResType:LockOwner Stype:'OR'Xdes:0x00000000808F1A80 Mode: S SPID:79 BatchID:0 ECID:0 TaskProxy:(0x0000000129E82598) Value:0x1063d000 Cost:(0/0) 
2008-12-05 07:48:28.19 spid4s  3:SearchOR Considering new blocker - task: 0000000000C3FC18, Worker 00000000F847C1C0 
2008-12-05 07:48:28.19 spid4s  4:InsertKnown Cycle found between old res owner: [ ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 Cost:(0/1544)] and new res owner [ ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 Cost:(0/1544)] 
2008-12-05 07:48:28.19 spid4s  4:InsertKnown search result: Deadlock found (blocking owner is on a stack) 
2008-12-05 07:48:28.19 spid4s  3:SearchOR search result: Deadlock found (cycle on this level or before) 
2008-12-05 07:48:28.19 spid4s  1:SearchOR search result: Deadlock found (cycle on this level or before) 
2008-12-05 07:48:28.19 spid4s  Deadlock encountered .... Printing deadlock information 
2008-12-05 07:48:28.19 spid4s  Wait-for graph 
2008-12-05 07:48:28.19 spid4s  
2008-12-05 07:48:28.19 spid4s  Node:1 

2008-12-05 07:48:28.19 spid4s  KEY: 10:72057594060734464 (c80089667602) CleanCnt:3 Mode:S Flags: 0x0 
2008-12-05 07:48:28.19 spid4s  Grant List 1: 
2008-12-05 07:48:28.19 spid4s   Owner:0x000000011063CDC0 Mode: S  Flg:0x0 Ref:1 Life:00000000 SPID:79 ECID:0 XactLockInfo: 0x00000000808F1AB8 
2008-12-05 07:48:28.19 spid4s   SPID: 79 ECID: 0 Statement Type: INSERT Line #: 220 
2008-12-05 07:48:28.19 spid4s   Input Buf: RPC Event: Proc [Database Id = 10 Object Id = 1751794144] 
2008-12-05 07:48:28.19 spid4s  Requested By: 
2008-12-05 07:48:28.19 spid4s   ResType:LockOwner Stype:'OR'Xdes:0x00000000813B8700 Mode: X SPID:77 BatchID:0 ECID:0 TaskProxy:(0x00000000CE6D8598) Value:0x1043f980 Cost:(0/1544) 
2008-12-05 07:48:28.19 spid4s  
2008-12-05 07:48:28.19 spid4s  Node:2 

2008-12-05 07:48:28.19 spid4s  KEY: 10:72057594038910976 (0c0092f62b82) CleanCnt:2 Mode:X Flags: 0x0 
2008-12-05 07:48:28.19 spid4s  Grant List 0: 
2008-12-05 07:48:28.19 spid4s   Owner:0x000000011043F300 Mode: X  Flg:0x0 Ref:0 Life:02000000 SPID:77 ECID:0 XactLockInfo: 0x00000000813B8738 
2008-12-05 07:48:28.19 spid4s   SPID: 77 ECID: 0 Statement Type: UPDATE Line #: 23 
2008-12-05 07:48:28.19 spid4s   Input Buf: RPC Event: Proc [Database Id = 10 Object Id = 1791462302] 
2008-12-05 07:48:28.19 spid4s  Requested By: 
2008-12-05 07:48:28.19 spid4s   ResType:LockOwner Stype:'OR'Xdes:0x00000000808F1A80 Mode: S SPID:79 BatchID:0 ECID:0 TaskProxy:(0x0000000129E82598) Value:0x1063d000 Cost:(0/0) 
2008-12-05 07:48:28.19 spid4s  
2008-12-05 07:48:28.19 spid4s  Victim Resource Owner: 
2008-12-05 07:48:28.19 spid4s  ResType:LockOwner Stype:'OR'Xdes:0x00000000808F1A80 Mode: S SPID:79 BatchID:0 ECID:0 TaskProxy:(0x0000000129E82598) Value:0x1063d000 Cost:(0/0) 
2008-12-05 07:48:28.19 spid4s  End deadlock search 634 ... a deadlock was found. 
2008-12-05 07:48:28.19 spid4s  ---------------------------------- 

回答

10

這些ID實際上是指hobts(堆或二進制樹),在sys.partitions找到。在數據庫10中嘗試下面的查詢,你會發現哪個對象和哪個索引受到影響。

SELECT hobt_id, object_name(p.[object_id]), index_id 
FROM sys.partitions p 
WHERE hobt_id = 72057594060734464