10 Stimmen

Sql Server Deadlock Objekt-IDs sind zu groß

Ich versuche, einen Deadlock zu verfolgen, der in unserer SQL 2005-Datenbank (64-Bit) auftritt. Derzeit ist die Snapshot-Isolierung nicht aktiviert.

Ich habe den tf-1204 eingeschaltet und die folgende Ausgabe erhalten.

Anhand 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 eine einfache primärschlüsselbasierte Aktualisierung einer einzelnen Datenzeile vornimmt.

Was ich nicht feststellen kann, ist die tatsächliche Ressource, um die hier gestritten wurde. 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 es int-Werte sein, daher bin ich mir nicht sicher, woher diese großen Zahlen kommen.

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

Wie kann ich diese Objektbezeichner auflösen?

Hier ist die Ausgabe des Deadlock 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      ----------------------------------

14voto

Jim McLeod Punkte 932

Diese IDs beziehen sich eigentlich auf hobts (Heap Or Binary Tree), die in sys.partitions zu finden sind. Versuchen Sie die folgende Abfrage in der 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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X