查询不到已经创建过的事件会话(扩展事件)

一:问题描述:

--查询语句:

SELECT *

FROM sys.dm_xe_sessions

WHERE name='MONITORING_DEADLOCK2'

--结果是空的(之前已经创建过该事件会话)

试图再次创建下该会话

语句:

 CREATE EVENT SESSION MONITORING_DEADLOCK2  ON SERVER
ADD EVENT sqlserver.xml_deadlock_report

ACTION(sqlos.worker_address,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.client_pid,sqlserver.database_id,sqlserver.database_name,sqlserver.query_plan_hash,sqlserver.session_id,sqlserver.session_nt_username,sqlserver.sql_text,sqlserver.username)
)
ADD TARGET package0.ring_buffer  
WITH (MAX_DISPATCH_LATENCY = 30 SECONDS); 

报错:

查询不到已经创建过的事件会话(扩展事件)_第1张图片

二:出错原因:

该事件会话未启动(昨天,我关了次服务器,重新启动后,事件会话却没有启动,故查询不到该事件会话信息)


三:解决办法:

方法一:手动启动该事件会话(弊端:如果服务器重启的话,还得手动重启该事件会话)

ALTER EVENT SESSION MONITORING_DEADLOCK2 ON SERVER STATE = START; 

现在,再查询下,就有了

--查询语句:

SELECT *

FROM sys.dm_xe_sessions

WHERE name='MONITORING_DEADLOCK2'


方法二:设置’在服务器启动时启动事件会话‘

展开’对象资源管理器‘->管理->会话->右击该事件会话,点击’属性‘,如图:

 查询不到已经创建过的事件会话(扩展事件)_第2张图片

勾选’在服务器启动时启动事件会话‘,如图:

查询不到已经创建过的事件会话(扩展事件)_第3张图片

你可能感兴趣的:(查询不到已经创建过的事件会话(扩展事件))