DECLARE @xe AS VARCHAR(99) = 'AlwaysOn_health'
IF EXISTS (SELECT 1 FROM sys.server_event_sessions WHERE name = @xe)
IF EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name = @xe)
PRINT 'XE "' + @xe + '" exists and it is currently enabled.'
ELSE
PRINT 'XE "' + @xe + '" exists but it is currently diabled.'
ELSE
PRINT 'XE "' + @xe + '" doesn''t exist. (check name)'
有但不一定提供“状态”本身。如果您在此处查看
sys.dm_xe_sessions
在线图书中的定义:关键是
active extended events sessions
,这个 DMV 只会返回那些正在运行的 XE 会话。所以你基本上只看一下,create_time
那是会话开始的时候。您可以通过查看system_health
会话来验证这一点,因为返回的时间应该与上次启动实例的时间相匹配。一个例子是我在本地机器上的 SQL Server 2012 实例大部分时间都保持停止,直到我需要它。我刚开始,所以你可以看到时间非常接近:
这是检查指定的扩展事件会话是否存在以及是否启用或禁用的快速代码:
HTH。