2008-12-09 5 views
6

Ich versuche, einen Deadlock zu verfolgen, der in unserer SQL 2005-Datenbank (64-Bit) auftritt. Momentan ist die Snapshot-Isolation nicht aktiviert.Sql Server Deadlock Objekt-IDs sind zu groß

Ich tf-1204 eingeschaltet und erhielt die Ausgabe unten.

Von dieser Ausgabe kann ich feststellen, dass Knoten 1 eine gespeicherte Prozedur ist, die Daten auswählt und nur Werte in #temp-Tabellen ändert.

Knoten 2 ist eine weitere gespeicherte Prozedur, die ein einfaches, auf Primärschlüsseln basierendes Update für eine einzelne Datenzeile ausführt.

Was ich nicht feststellen kann, ist die tatsächliche Ressource, die hier in Streit war. Mit den Schlüsseln 10: 72057594060734464 und 10: 72057594038910976 kann ich die Datenbank ermitteln, aber diese Objekt-IDs können nicht mit object_name aufgelöst werden. Eigentlich sollten sie int-Werte sein, also bin ich mir nicht sicher, woher diese großen Zahlen kommen.

Bei der Untersuchung des Problems konnte ich ähnliche Werte aus Activity Monitor für Objekt-ID auch erhalten.

Wie löse ich diese Objektkennungen auf? Hier

ist die Deadlock tf-1204 Ausgabe:

 
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  ---------------------------------- 

Antwort

10

Diese IDs beziehen sich eigentlich auf hobts ​​(Heap oder Binary Tree), in sys.partitions gefunden. Versuchen Sie die folgende Abfrage in Datenbank 10, und Sie werden feststellen, welches Objekt und welcher Index betroffen ist.

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