SQL Server 2005: Transaktions-Deadlock

8

Ich erhalte diesen Fehler sehr häufig, aber nicht konsistent auf zwei Seiten in einer Anwendung, die sich in einer Produktionsumgebung befindet. Ich habe nur einige Screenshots des Fehlers unten.

Transaktion (Prozess-ID XX) wurde bei Sperre | Kommunikationspuffer Ressourcen mit einem anderen Prozess und wurde als Deadlock-Opfer gewählt. Führen Sie die Transaktion erneut aus.

Was sollte der Ansatz sein, um diesen Fehler zu beheben? Der Datenbankserver ist SQL Server 2005.

    
renegadeMind 15.01.2009, 15:01
quelle

5 Antworten

5

Hier ist die Bibel zur Deadlock-Fehlersuche:

Ссылка

    
SQLMenace 15.01.2009, 15:06
quelle
3

Dies Artikel von Brad McGehee ist ein guter Anfang.

    
Mitch Wheat 15.01.2009 15:03
quelle
3

Siehe auch hier: Proaktive Deadlock-Benachrichtigungen

    
SQLMenace 15.01.2009 15:10
quelle
1

Sie könnten tun, wie die Fehlermeldung vorschlägt und das Programm veranlassen, die Transaktion erneut zu versuchen!

Kommt sehr darauf an, wie "atomar" die Transaktion ist! Wenn Sie festgefahren sind, ist es wahrscheinlich, dass ein anderer Prozess die Zeile, die Sie interessiert, erfolgreich aktualisiert hat. Ist es unter diesen Umständen dennoch sinnvoll, das Update auf die Zeile anzuwenden?

Geben Sie dem Benutzer zumindest eine schönere Fehlermeldung ("Ein anderer Benutzer hat die xxxx geändert, die Sie aktualisieren wollten. Überprüfen Sie die neuen Werte und versuchen Sie es erneut.)

    
James Anderson 15.01.2009 15:14
quelle