sql-server - 扩展事件中的死锁图未显示
问题描述
我有这个查询来自“Sql Server 2017 Query Performance Tuning”(一本书)。这本书的代码可以在这里找到:https ://github.com/Apress/sql-server-2017-query-perf-tuning
DECLARE @path NVARCHAR(260)
--to retrieve the local path of system_health files
SELECT @path = dosdlc.path
FROM sys.dm_os_server_diagnostics_log_configurations AS dosdlc;
SELECT @path = @path + N'system_health_*';
WITH fxd
AS (SELECT CAST(fx.event_data AS XML) AS Event_Data
FROM sys.fn_xe_file_target_read_file(@path,
NULL,
NULL,
NULL) AS fx )
SELECT dl.deadlockgraph
FROM
( SELECT dl.query('.') AS deadlockgraph
FROM fxd
CROSS APPLY event_data.nodes('(/event/data/value/deadlock)') AS d(dl) ) AS dl;
它应该从扩展事件中捕获死锁图。我刚刚按照这个示例生成了一个死锁(如何在 SQL Server 上模拟 DEADLOCK?)。
但是当我运行查询时,我得到一个空的结果集。
解决方案
看起来您的 XML 路径规范是针对 XE 环形缓冲区目标而不是文件目标的。试试下面的查询。
--Get xml_deadlock_report events from system_health session file target
WITH
--get trace folder path and append session name with wildcard (assumes base file name is same as session name)
all_trace_files AS (
SELECT path + '\system_health*.xel' AS FileNamePattern
FROM sys.dm_os_server_diagnostics_log_configurations
)
--get xml_deadlock_report events from all system_health trace files
, deadlock_reports AS (
SELECT CAST(event_data AS xml) AS deadlock_report_xml
FROM all_trace_files
CROSS APPLY sys.fn_xe_file_target_read_file ( FileNamePattern, NULL, NULL, NULL) AS trace_records
WHERE trace_records.object_name like 'xml_deadlock_report'
)
SELECT
deadlock_report_xml.value('(/event/@timestamp)[1]', 'datetime2') AS UtcTimestamp
, deadlock_report_xml AS DeadlockReportXml
FROM deadlock_reports;
要在 SSMS 中查看图形死锁报告,请event/data/value
从 XML 文档的开始/结束处删除开始/结束标记,并将其另存为扩展名为“.xdl”的文件。然后在 SSMS 中打开文件以查看死锁图。
推荐阅读
- python - 制定一个类以在引用字典时引入新数据
- node.js - socketcluster jwt auth 使用在另一台服务器上生成的令牌
- java - 在现代项目中使用具有较旧语言级别的 JAR 对性能有何影响?
- ios - 如何在 Swift 中查找连接到我的 Wifi 的所有设备的 IP 和 Mac 地址?
- android - 传递任何对象的内存泄漏
- kubernetes - 如何设置 Kubernetes 镜像拉取重试限制
- javascript - 将对象值映射到键 - Javascript
- javascript - 从中获取价值打字稿中的元素
- swift - Firebase 聊天用户正在输入指示单元格
- javascript - Gatsby / Netlify Styles 不会显示?