SQL Server 2000 – Debuggen von Deadlocks
-
09-06-2019 - |
Frage
Ich suche nach Vorschlägen zum Debuggen und Aufspüren von Deadlock-Problemen in einer SQL Server 2000-Datenbank.Mir wurde empfohlen, die Trace-Flags 1024 und 3605 zu verwenden, die meiner Meinung nach Folgendes liefern:
1024 – Dieses Trace-Flag gibt den Typ der am Deadlock beteiligten Sperren und den aktuellen betroffenen Befehl zurück.
3605 – Dieses Trace-Flag sendet die Trace-Ausgabe an das Fehlerprotokoll.
Die spezifischen gespeicherten Prozeduren, Tabellen und Indizes müssen noch aufgedeckt werden, daher besteht das Ziel darin, diese Ablaufverfolgungsflags zu verwenden.Und dann weiß ich besser, welche Indizes optimiert werden müssen, welche Sperrhinweise zur Optimierung von Abfragen vorliegen und welche potenziellen Sproc-Fehler behoben werden müssen.
Irgendwelche anderen Vorschläge oder Happy-End-Kriegsgeschichten, um diesem allzu häufigen Problem auf den Grund zu gehen?
Lösung
Hier ist die Bibel zur Fehlerbehebung bei Deadlocks: http://blogs.msdn.com/bartd/archive/2006/09/09/Deadlock-Troubleshooting_2C00_-Part-1.aspx
Andere Tipps
Sehr nützliches Skript zur Analyse von Deadlocks: http://www.sommarskog.se/sqlutil/aba_lockinfo.html
Sobald Sie die beteiligten SQL-Anweisungen kennen, wird eine Codeanalyse sicherlich hilfreich sein.Einige Faustregeln überprüfen die Reihenfolge, in der auf die Zeilen zugegriffen wird, und prüfen die Isolationsstufe, die für die SQL-Anweisungen verwendet wird.Ein Profiler-Trace kann sehr hilfreich sein.
Meistens liegt es daran, dass ein Leser versucht, eine gemeinsame Sperre für eine Ressource zu erhalten, die ausschließlich von einem Autor gesperrt wurde.