T-SQL-Lösung zur automatischen Erfassung und Auswertung von SQL Server Deadlocks aus der System Health Extended Events Session — entwickelt von dtcSoftware (Uwe Janke).
Der DeadlockCollector liest stündlich per SQL Agent Job die Deadlock-Graphen aus der system_health XEvent-Session aus, parst die XML-Struktur und speichert die aufbereiteten Daten in einer dedizierten Datenbank. Kein Extended Events Trace konfigurieren — die system_health-Session läuft auf jedem SQL Server automatisch.
Erstellt: 2018 | Getestet auf: SQL Server 2016 / 2019 / 2022
- Keine Konfiguration: Nutzt die eingebaute
system_healthXEvent-Session — läuft auf jedem SQL Server ohne zusätzliche Traces - XML-Parsing: T-SQL-Funktion
sel_xml_Listextrahiertvictim-list,process-listundresource-listaus dem Deadlock-Graph - SQL Agent Job: Stündliche automatische Erfassung per
dbo.Collect - Dedizierte Datenbank: Alle Deadlock-Daten in separater
DeadlockCollector-Datenbank - Historische Auswertung: Deadlocks bleiben nach dem Ring-Buffer-Rollover erhalten
-- Schritt 1: Datenbank und Objekte anlegen
-- Als sysadmin auf dem Zielserver ausführen
:r SetUpDeadlockCollectorDb.sql
-- Schritt 2: SQL Agent Job einrichten
:r SetUpDeadlockCollectorJob.sqlOder in SSMS: beide Skripte nacheinander im Kontext des Zielservers ausführen.
| Datei | Inhalt |
|---|---|
SetUpDeadlockCollectorDb.sql |
Datenbank, Tabellen, XML-Parsing-Funktion, dbo.Collect Stored Procedure |
SetUpDeadlockCollectorJob.sql |
SQL Agent Job (stündlich, ruft dbo.Collect auf) |
DeadlockCollector_Website.html |
Technische Dokumentation |
system_health XEvent Session (automatisch aktiv)
↓ (stündlich per SQL Agent Job)
dbo.Collect
↓ parst XML via sel_xml_List()
DeadlockCollector-Datenbank
↓
Auswertung / Reports
- Website: www.powershelldba.de
- Entwickler: Uwe Janke, Senior IT-Spezialist / SQL Server DBA