--sql server 2008及以上才支持,2012及以上才支持GUI界面
msdn 扩展事件:点击打开链接
【1】T-SQL实现
基于 rpc_completed(远程过程调用已完成时发生) 事件与 sql_batch_completed(Transact-SQL 批处理执行完毕时发生) 事件
转自: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:ToolsDBAEventLogslow_query.xel',max_file_size=(10)) --路径、文件MB, 自行修改 WITH (STARTUP_STATE=ON) GO -- 启用(停止)事件会话(START / STOP) ALTER EVENT SESSION slow_query ON SERVER STATE=START GO
【2】GUI实现
基于 sql_statement_completed(Transact-SQL 语句已完成时发生)
和 query_post_execution_showplan (在执行 SQL 语句后发生。此事件返回实际查询计划的 XML 表示形式。使用此事件可能带来严重的性能开销,所以只有在短时间内解决或监视特定问题时才应使用此事件。)
(1)新建会话,把sql_statement_completed 和 query_post_execution_showplan 事件给选上
(2)谓词 筛选出持续时间大于3s的,并排除系统数据库,两个事件都这么设置
(3)实时监控,查看结果
(4)再做修改,加全局字段与事件字段。而query_post_execution_showplan事件加了username全局字段和databaseName
(5)查看加了字段之后的结果
相关参考文章:
概念与介绍~https://blog.csdn.net/kk185800961/article/details/49725903