【扩展事件】跟踪超过3秒的SQL
msdn 扩展事件:点击打开链接
转自:https://blog.csdn.net/yenange/article/details/52592814
-- 删除事件会话 IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name = 'slow_query') DROP EVENT SESSION slow_query ON SERVER GO -- 创建事件会话 CREATE EVENT SESSION [slow_query] ON SERVER ADD EVENT sqlserver.rpc_completed( ACTION(sqlos.task_time,sqlserver.database_name,sqlserver.nt_username,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username) WHERE --AND [sqlserver].[database_name]=N'xxxx' -- 数据库名, 自行修改 --and sqlserver.username=N'xxxx' -- 数据库用户名, 自行修改 [duration]>=3000000 -- 消耗秒数超 3 秒 ), ADD EVENT sqlserver.sql_batch_completed( ACTION(sqlos.task_time,sqlserver.database_name,sqlserver.nt_username,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username) WHERE --AND [sqlserver].[database_name]=N'xxxx' -- 数据库名, 自行修改 --and sqlserver.username=N'xxxx' -- 数据库用户名, 自行修改 [duration]>=3000000 -- 消耗秒数超 3 秒 ) ADD TARGET package0.event_file(SET filename=N'D:\Tools\DBA\EventLog\slow_query.xel',max_file_size=(10)) --路径、文件MB, 自行修改 WITH (STARTUP_STATE=ON) GO -- 启用(停止)事件会话(START / STOP) ALTER EVENT SESSION slow_query ON SERVER STATE=START GO
可以使用这种方式以表格查询方式查阅
SELECT CONVERT(XML,event_data) AS data sys.Fn_xe_file_target_read_file(N'D:\Tools\DBA\EventLog\slow_query.xel\servername_ev_block_session.xel',NULL,NULL,NULL)
转成表格查阅:
with d as ( SELECT CONVERT(XML,event_data) AS data from sys.Fn_xe_file_target_read_file(N'E:\dba_tools\eventlog\slow_query_0_132422809173040000.xel',NULL,NULL,NULL) ) select dateadd(hour,8,data.value('(/event/@timestamp)[1]','datetime')) as record_time, --获取最上方标题行的内容 data.value('(/event/@name)[1]','nvarchar(128)') as operation_name, --获取最上方标题行的内容 --data.value('(/event/data[@name="cpu_time"]/value)[1]','int')/1000 as 'cpu_time(ms)',--获得 event=>data name=cpu_time 的 value data.value('(/event/data[@name="duration"]/value)[1]','int')/1000 as 'exec_time(ms)',--获得 event=>data name=duration 的 value --data.value('(/event/data[@name="physical_reads"]/value)[1]','int') as 'physical_reads',--获得 event=>data name=physical_reads 的 value --data.value('(/event/data[@name="logical_reads"]/value)[1]','int') as 'logical_reads',--获得 event=>data name=logical_reads 的 value --data.value('(/event/data[@name="writes"]/value)[1]','int') as 'writes',--获得 event=>data name=writes 的 value data.value('(/event/data[@name="row_count"]/value)[1]','int') as 'row_count',--获得 event=>data name=row_count 的 value data.value('(/event/data[@name="result"]/value)[1]','int') as 'result_flag',--获得 event=>data name=result 的 value data.value('(/event/data[@name="result"]/text)[1]','nvarchar(128)') as 'result_desc',--获得 event=>data name=result 的 text data.value('(/event/data[@name="batch_text"]/value)[1]','nvarchar(max)') as 'batch_text',--获得 event=>data name=batch_text 的 text data.value('(/event/action[@name="sql_text"]/value)[1]','nvarchar(4000)') as 'current_sql',--获得 event=>action name=sql_text 的 value --data.value('(/event/action[@name="task_time"]/value)[1]','int')/1000 as 'task_time(ms)',--获得 event=>action name=task_time 的 value data.value('(/event/action[@name="database_name"]/value)[1]','nvarchar(400)') as 'database_name',--获得 event=>action name=database_name 的 value data.value('(/event/action[@name="transaction_id"]/value)[1]','nvarchar(400)') as 'transaction_id',--获得 event=>action name=transaction_id 的 value data.value('(/event/action[@name="username"]/value)[1]','nvarchar(400)') as 'username',--获得 event=>action name=transaction_id 的 value data.value('(/event/action[@name="nt_username"]/value)[1]','nvarchar(400)') as 'nt_username'--获得 event=>action name=transaction_id 的 value from d
【sql server使用T-SQL读取扩展事件】
【参考文档】
概念与介绍~https://blog.csdn.net/kk185800961/article/details/49725903
GUI的使用~https://www.cnblogs.com/lyhabc/p/3475132.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南