Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Managed Instance
Verwenden Sie SQL Server Profiler , um die Ursache für einen Deadlock zu identifizieren. Ein Deadlock tritt auf, wenn es eine zyklische Abhängigkeit zwischen zwei oder mehr Threads oder Prozessen für einige Ressourcen in SQL Server gibt. Mit SQL Server Profiler können Sie eine Ablaufverfolgung erstellen, die Deadlock-Ereignisse zur Analyse aufzeichnet, wiedergibt und anzeigt.
Um eine Ablaufverfolgung für Deadlockereignisse auszuführen, fügen Sie die Deadlock graph -Ereignisklasse zu einer Ablaufverfolgung hinzu. Diese Ereignisklasse füllt die TextData -Datenspalte in der Ablaufverfolgung mit XML-Daten zum Prozess sowie zu vom Deadlock betroffenen Objekten auf. SQL Server Profiler kann das XML-Dokument in eine Deadlock-XML-Datei (.xdl) extrahieren, die Sie später in SQL Server Management Studio anzeigen können. Sie können SQL Server Profiler so konfigurieren, dass Deadlock graph -Ereignisse entweder in eine einzelne Datei mit allen Deadlock graph -Ereignissen oder in separate Dateien extrahiert werden. Das Extrahieren kann auf eine der folgenden Arten ausgeführt werden:
Verwenden Sie zur Konfiguration die Registerkarte Einstellungen zur Ereignisextraktion. Diese Registerkarte wird erst angezeigt, wenn Sie das Deadlock-Diagramm Ereignis auf der Registerkarte Ereignisauswahl auswählen.
Mithilfe der Option SQL Server-Ereignisse extrahieren im Menü Datei
Einzelne Ereignisse können auch extrahiert und gespeichert werden, indem Sie mit der rechten Maustaste auf ein bestimmtes Ereignis klicken und Ereignisdaten extrahierenauswählen.
Deadlock-Grafiken
SQL Server Profiler und SQL Server Management Studio verwenden einen Deadlock-Wait-For-Graph zur Beschreibung eines Deadlocks. Der Deadlock-Wait-for-Graph enthält Prozessknoten, Ressourcenknoten und Kanten, die die Beziehungen zwischen den Prozessen und den Ressourcen darstellen. Die folgende Tabelle enthält die Definitionen der Komponenten in Wartediagrammen:
| Knoten | BESCHREIBUNG |
|---|---|
| Prozessknoten | Ein Thread, der eine Aufgabe ausführt; z. B. INSERT, UPDATE oder DELETE. |
| Ressourcenknoten | Ein Datenbankobjekt, beispielsweise eine Tabelle, ein Index oder eine Zeile |
| Rand | Die Beziehung zwischen einen Prozess und einer Ressource. Eine Anforderungskante tritt auf, wenn ein Prozess auf eine Ressource wartet. Ein owner -Rahmen tritt auf, wenn eine Ressource auf einen Prozess wartet. Der Sperrmodus ist in der Kantenbeschreibung enthalten. Beispiel: Modus: X. |
Deadlock-Prozessknoten
In einem Wartediagramm enthält der Prozessknoten Informationen zum Prozess. In der folgenden Tabelle werden die Komponenten eines Prozesses erläutert.
| Komponente | Definition |
|---|---|
| Serverprozess-ID | Sitzungs-ID (SPID), ein server zugewiesener Bezeichner für den Prozess, der die Sperre besitzt. |
| Server-Batch-ID | Serverbatch-Bezeichner (Server Batch Identifier, SBID) |
| Ausführungskontext-ID | Ausführungskontext-Bezeichner (Execution Context ID, ECID). Die Ausführungskontext-ID eines bestimmten Threads, der einer bestimmten Sitzungs-ID zugeordnet ist. ECID = { 0, 1, 2, 3, ... n }, wobei 0 immer den Hauptthread oder den übergeordneten Thread darstellt, und { 1, 2, 3, ... n } stellt die Unterthreads dar. |
| Deadlockpriorität | Priorität bei einem Deadlock für den Prozess. Weitere Informationen zu möglichen Werten finden Sie unter SET DEADLOCK_PRIORITY. |
| Verwendetes Log | Protokollspeicherplatz, der vom Prozess belegt wird |
| Besitzer-ID | Transaktions-ID für die Prozesse, die Transaktionen verwenden und sich aufgrund einer Sperre gegenwärtig im Wartezustand befinden |
| Transaktionsdeskriptor | Zeiger auf den Transaktionsdeskriptor, der den Transaktionszustand beschreibt |
| Eingabepuffer | Eingabepuffer des aktuellen Prozesses. Er definiert den Ereignistyp und die ausgeführte Anweisung. Mögliche Werte sind: Sprache RPC Nichts |
| Anweisung | Typ der Aussage. Mögliche Werte: NOP AUSWÄHLEN UPDATE INSERT DELETE Unbekannt |
Deadlock-Ressourcenknoten
Bei einem Deadlock warten zwei Prozesse auf eine Ressource, die vom jeweils anderen Prozess beansprucht wird. In einem Deadlockdiagramm werden die Ressourcen als Ressourcenknoten angezeigt.