如何使用xml_deadlock_report查看参与死锁的SQL语句?

如何使用xml_deadlock_report查看参与死锁的SQL语句?,sql,sql-server-2012,Sql,Sql Server 2012,我发现我的数据库在默认情况下有xml\u死锁\u报告扩展事件处于打开状态。在我的服务器日志中,我发现了一些死锁异常。xp_readerrorlog不显示任何死锁信息。如何获取死锁信息。以下是答案 SELECT CAST ( REPLACE ( REPLACE ( XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)'), '<victim-list>'

我发现我的数据库在默认情况下有xml\u死锁\u报告扩展事件处于打开状态。在我的服务器日志中,我发现了一些死锁异常。xp_readerrorlog不显示任何死锁信息。如何获取死锁信息。

以下是答案

SELECT CAST (
    REPLACE (
        REPLACE (
            XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)'),
            '<victim-list>', '<deadlock><victim-list>'),
        '<process-list>', '</victim-list><process-list>')
    AS XML) AS DeadlockGraph
FROM (SELECT CAST (target_data AS XML) AS TargetData
    FROM sys.dm_xe_session_targets st
    JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address
    WHERE [name] = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
    WHERE XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report';
多亏了