Deadlocks sichtbar machen

Deadlocks sichtbar machen

- Matt

Ein Deadlock im Produktivsystem, und niemand weiß, welche zwei Abfragen sich blockiert haben. Die gute Nachricht: SQL Server schreibt es ohnehin mit.

SELECT CAST(xet.target_data AS XML)
FROM sys.dm_xe_session_targets xet
JOIN sys.dm_xe_sessions xe ON xe.address = xet.event_session_address
WHERE xe.name = 'system_health' AND xet.target_name = 'ring_buffer';

Im XML steht der Deadlock-Graph mit beiden beteiligten Anweisungen und den gehaltenen Sperren. In SSMS lässt er sich als Diagramm anzeigen.

Der Ringpuffer ist begrenzt, alte Einträge fallen also heraus. Wer regelmäßig Deadlocks hat, sollte eine eigene Session mit Dateiziel einrichten.