none
Interpretation Deadlockinformationen in SQL Server Log RRS feed

  • Frage

  • Hallo,
    ich habe im SQL Server Log eine TRACE (1204) Ausschrift:
    02/11/2010 16:12:01,spid7s,Unbekannt,ResType:LockOwner Stype:'OR'Xdes:0x29F95CA8 Mode: S SPID:54 BatchID:0 ECID:3 TaskProxy:(0x30084740) Value:0x179ae220 Cost:(0/1812)
    02/11/2010 16:12:01,spid7s,Unbekannt,Victim Resource Owner:
    02/11/2010 16:12:01,spid7s,Unbekannt,Der Protokoll-Viewer konnte die Informationen für diesen Protokolleintrag nicht lesen. Ursache: Der Wert eines Null-SQL-Datensatzes kann nicht zurückgegeben werden.. Inhalt:
    02/11/2010 16:12:01,spid7s,Unbekannt,ResType:ExchangeId Stype:'AND' SPID:54 BatchID:0 ECID:0 TaskProxy:(0x398C2340) Value:0xa178e8 Cost:(0/10000)
    02/11/2010 16:12:01,spid7s,Unbekannt,Port: 0x05D01700  Xid Slot: 0<c/> Wait Slot: 1<c/> Task: 0x00A178E8<c/> (Coordinator)<c/> Exchange Wait Type: e_waitPortOpen<c/> Merging: 0
    02/11/2010 16:12:01,spid7s,Unbekannt,Node:5
    02/11/2010 16:12:01,spid7s,Unbekannt,Der Protokoll-Viewer konnte die Informationen für diesen Protokolleintrag nicht lesen. Ursache: Der Wert eines Null-SQL-Datensatzes kann nicht zurückgegeben werden.. Inhalt:
    02/11/2010 16:12:01,spid7s,Unbekannt,Input Buf: No Event:
    02/11/2010 16:12:01,spid7s,Unbekannt,SPID: 54 ECID: 2 Statement Type: OPEN CURSOR Line #: 27
    02/11/2010 16:12:01,spid7s,Unbekannt,ResType:ExchangeId Stype:'AND' SPID:54 BatchID:0 ECID:2 TaskProxy:(0x30084710) Value:0x9fd720 Cost:(0/10000)
    02/11/2010 16:12:01,spid7s,Unbekannt,Port: 0x05D01700  Xid Slot: 1<c/> Wait Slot: 2<c/> Task: 0x009FD720<c/> (Producer)<c/> Exchange Wait Type: e_waitPortOpen<c/> Merging: 1
    02/11/2010 16:12:01,spid7s,Unbekannt,Node:4
    02/11/2010 16:12:01,spid7s,Unbekannt,Der Protokoll-Viewer konnte die Informationen für diesen Protokolleintrag nicht lesen. Ursache: Der Wert eines Null-SQL-Datensatzes kann nicht zurückgegeben werden.. Inhalt:
    02/11/2010 16:12:01,spid7s,Unbekannt,Input Buf: No Event:
    02/11/2010 16:12:01,spid7s,Unbekannt,SPID: 54 ECID: 1 Statement Type: OPEN CURSOR Line #: 27
    02/11/2010 16:12:01,spid7s,Unbekannt,ResType:ExchangeId Stype:'AND' SPID:54 BatchID:0 ECID:1 TaskProxy:(0x300846E0) Value:0x9c9558 Cost:(0/10000)
    02/11/2010 16:12:01,spid7s,Unbekannt,Port: 0x05D01700  Xid Slot: 2<c/> Wait Slot: 3<c/> Task: 0x009C9558<c/> (Producer)<c/> Exchange Wait Type: e_waitPortOpen<c/> Merging: 1
    02/11/2010 16:12:01,spid7s,Unbekannt,Node:3
    02/11/2010 16:12:01,spid7s,Unbekannt,Der Protokoll-Viewer konnte die Informationen für diesen Protokolleintrag nicht lesen. Ursache: Der Wert eines Null-SQL-Datensatzes kann nicht zurückgegeben werden.. Inhalt:
    02/11/2010 16:12:01,spid7s,Unbekannt,ResType:LockOwner Stype:'OR'Xdes:0x1B5F7CF0 Mode: S SPID:78 BatchID:0 ECID:1 TaskProxy:(0x2E49E6A8) Value:0x123c61c0 Cost:(0/4872)
    02/11/2010 16:12:01,spid7s,Unbekannt,Requested by:
    02/11/2010 16:12:01,spid7s,Unbekannt,Input Buf: RPC Event: Proc [Database Id = 7 Object Id = 1869666154]
    02/11/2010 16:12:01,spid7s,Unbekannt,SPID: 54 ECID: 0 Statement Type: OPEN CURSOR Line #: 27
    02/11/2010 16:12:01,spid7s,Unbekannt,Owner:0x14B522A0 Mode: IX       Flg:0x40 Ref:0 Life:02000000 SPID:54 ECID:0 XactLockInfo: 0x0A4482A8
    02/11/2010 16:12:01,spid7s,Unbekannt,Grant List 2:
    02/11/2010 16:12:01,spid7s,Unbekannt,Grant List 1:
    02/11/2010 16:12:01,spid7s,Unbekannt,PAGE: 7:1:61929                CleanCnt:3 Mode:IX Flags: 0x3
    02/11/2010 16:12:01,spid7s,Unbekannt,Node:2
    02/11/2010 16:12:01,spid7s,Unbekannt,Der Protokoll-Viewer konnte die Informationen für diesen Protokolleintrag nicht lesen. Ursache: Der Wert eines Null-SQL-Datensatzes kann nicht zurückgegeben werden.. Inhalt:
    02/11/2010 16:12:01,spid7s,Unbekannt,ResType:LockOwner Stype:'OR'Xdes:0x29F95CA8 Mode: S SPID:54 BatchID:0 ECID:3 TaskProxy:(0x30084740) Value:0x179ae220 Cost:(0/1812)
    02/11/2010 16:12:01,spid7s,Unbekannt,Requested by:
    02/11/2010 16:12:01,spid7s,Unbekannt,Input Buf: No Event:
    02/11/2010 16:12:01,spid7s,Unbekannt,SPID: 78 ECID: 1 Statement Type: OPEN CURSOR Line #: 27
    02/11/2010 16:12:01,spid7s,Unbekannt,Owner:0x123C61C0 Mode: S        Flg:0x42 Ref:1 Life:00000000 SPID:78 ECID:1 XactLockInfo: 0x1B5F7D18
    02/11/2010 16:12:01,spid7s,Unbekannt,Wait List:
    02/11/2010 16:12:01,spid7s,Unbekannt,PAGE: 7:1:61929                CleanCnt:3 Mode:IX Flags: 0x3
    02/11/2010 16:12:01,spid7s,Unbekannt,Node:1
    02/11/2010 16:12:01,spid7s,Unbekannt,Der Protokoll-Viewer konnte die Informationen für diesen Protokolleintrag nicht lesen. Ursache: Der Wert eines Null-SQL-Datensatzes kann nicht zurückgegeben werden.. Inhalt:
    02/11/2010 16:12:01,spid7s,Unbekannt,Wait-for graph
    02/11/2010 16:12:01,spid7s,Unbekannt,Deadlock encountered .... Printing deadlock information
    
    Leider kann ich nichts mit diesen Ausgaben anfangen. Selbst Google und Bing! helfen mir nicht weiter, da ich solche Texte nirgends finde.

    Kann mir hier jemand weiter helfen, wie ich an genauere Informationen komme, wo der Deadlock auftritt?
    Donnerstag, 11. Februar 2010 15:50

Alle Antworten

  • Hallo!
    Die Informationen scheinen mir etwas verstümmelt zu sein. Ausserdem habe ich auch selber noch nicht die Notwendigkeit gehabt, so einen Trace zu erstellen. Daher ist folgendes etwas erraten.

    Wenn ich die Daten richtig interpretiere, dann liegt hier die Ursache:
    Proc [Database Id = 7 Object Id = 1869666154]
    SPID: 54 ECID: 0 Statement Type: OPEN CURSOR Line #: 27
    SPID: 78 ECID: 1 Statement Type: OPEN CURSOR Line #: 27

    Beide versuchen den Cursor in Zeile 27 in der Prozedur Object_Name(1869666154) in der Database db_name(7) zu öffnen.

    Hier habe ich mal eine kurzen Einblick in solche Traces erhalten: http://blogs.msdn.com/bartd/attachment/747119.ashx

    Vielleicht verwendest Du auch mal den Profiler für die Fehlersuche:
    http://msdn.microsoft.com/de-de/library/ms188246.aspx
    Analysieren von Deadlocks mit SQL Server Profiler

    Auch das hier scheint nicht uninteressant:
    http://msdn.microsoft.com/de-de/library/ms178104.aspx
    Erkennen und Beenden von Deadlocks<!---->

    <!---->
     
    Leider schreibst Du nichts zu der Version des Servers und zum ServicePack-Stand.
    Einen schönen Tag noch, Christoph Muthmann Microsoft SQL Server MVP, http://www.insidesql.org
    Freitag, 12. Februar 2010 08:01
  • Hallo und 1000-Dank erstmal für die Antwort,

    die Server Version ist
    MS SQL Server 2008 (10.0.2532) auf einem
    Windows Server 2008 OS mit
    4 GB RAM und
    2 Quad-Core Prozessoren!

    Erkenne ich aus dem Log auch irgendwie, woher der Deadlock kommt (zu wenig RAM, Sperre der Tabelle, ...)?

    Weiterhin frage ich mich, was diese Ausschrift meint:
    Der Protokoll-Viewer konnte die Informationen für diesen Protokolleintrag nicht lesen. Ursache: Der Wert eines Null-SQL-Datensatzes kann nicht zurückgegeben werden.
    In dem Log-Files des Programmes, wo sich dieser Fehler äußert steht Folgendes:
    System.Data.SqlClient.SqlException: Die Transaktion (Prozess-ID 68) befand sich auf Sperre | Kommunikationspuffer Ressourcen aufgrund eines anderen Prozesses in einer Deadlocksituation und wurde als Deadlockopfer ausgewählt. Führen Sie die Transaktion erneut aus.
    Was ist damit gemeint?
    ------

    Ich werde jetzt erstmal die angeg. Prozedur untersuchen und weiter schauen...

    Danke nochmal,
    Patrick
    Freitag, 12. Februar 2010 08:53
  • Hallo Patrick,
    normalerweise sollte statt dieser mysteriösen Zeile deutlich mehr an Infos im Trace stehen. Warum das bei Dir nicht der Fall ist, weiß ich leider nicht. Es sind schon irgendwelche Sperr-Situationen. Mehr RAM könnte höchstens die Dauer der Sperren verkürzen, das Problem träte seltener auf, ändert aber nichts am grundlegenden Zustand.
    Versuche mal alternativ den Profiler, aber vielleicht findest Du ja auch in der Prozedur den Fehler.

    Die zweite Meldung bedeuet: Der SQL Server sucht eine Transaktion als Opfer des Deadlocks aus und beendet diese.


    Einen schönen Tag noch, Christoph Muthmann Microsoft SQL Server MVP, http://www.insidesql.org
    Freitag, 12. Februar 2010 09:02
  • Hallo nochmal,

    Der SQL Server ist ein SQL Server Standard.
    Gibt es da einen Profiler dazu oder kann man den downloaden?
    Bis jetzt läuft da nur ein SQL Server Management Studio ohne Profiler.

    Viele Grüße,
    Patrick
    Freitag, 12. Februar 2010 09:22
  • Hallo Patrick,
    im Management Studio solltest Du unter Extras den Punkt SQL Server Profiler finden.
    Alternativ findest Du ihn hier:
    Programme\Microsoft SQL Server 2008\Leistungstools\SQL Server Profiler

    Du könntest ihn aber auch von Deinem Client aus starten, wenn dort das SSMS installiert ist.

    Einen schönen Tag noch, Christoph Muthmann Microsoft SQL Server MVP, http://www.insidesql.org
    Freitag, 12. Februar 2010 11:40