一个用户在一个SQL Server框中报告了死锁错误(他可能在某些应用程序日志中找到它)。无论如何,我需要找出这个死锁的详细信息,但我从未启用任何跟踪标志,如1204和1222.默认情况下,SQL Server是否会记录死锁?我可以在某处找到有关该死锁的详细信息,还是必须启用跟踪标志然后等待再次发生死锁?
答案 0 :(得分:2)
我使用这个sql来获取所有死锁。
DECLARE @xml XML
SELECT @xml = target_data
FROM sys.dm_xe_session_targets
JOIN sys.dm_xe_sessions
ON event_session_address = address
WHERE name = 'system_health' AND target_name = 'ring_buffer'
SELECT CAST(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') AS XML)
FROM (SELECT @xml AS TargetData) AS Data
CROSS APPLY TargetData.nodes ('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData (XEvent)