获取 ApplicationName (sqlserver.client_app_name) 以显示在 xevent 中

Jus*_*ing 6 sql-server extended-events sql-server-2012

我正在尝试使用扩展事件检查一些 T-SQL,就像我以前使用 SQL 探查器一样。我有以下事件会话:

IF EXISTS (SELECT name FROM sys.dm_xe_sessions WHERE Name = 'PySoup tracing')
BEGIN
    DROP EVENT SESSION [PySoup tracing] ON SERVER
END

CREATE EVENT SESSION [PySoup tracing] ON SERVER 
ADD EVENT sqlserver.rpc_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text )),
ADD EVENT sqlserver.sp_statement_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text )),
ADD EVENT sqlserver.sql_batch_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text )),
ADD EVENT sqlserver.sql_statement_completed (ACTION(sqlserver.client_app_name, sqlserver.sql_text ))
ADD TARGET package0.event_file(SET filename=N'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Log\PySoup tracing.xel')--,
--ADD TARGET package0.ring_buffer(SET max_events_limit=(1000000))
GO

ALTER EVENT SESSION [PySoup tracing] ON SERVER
    STATE = START;
Run Code Online (Sandbox Code Playgroud)

我认为 ACTION 子句应该列出事件返回的列。但是,sqlserver.client_app_name在 GUI 中查看事件数据时没有看到列。

xevent 截屏

我究竟做错了什么?

Tho*_*ger 8

我以前见过这个问题,如果你有这种类型的序列,似乎会发生什么:

  1. 创建会话
  2. 开始会话
  3. 停止会话
  4. 添加柱状数据(操作或字段)
  5. 开始会话

GUI 不显示添加的柱状数据。您的选择是直接查询目标或清除/重命名旧会话定义的 XEL 文件。


小智 5

并不是说这将被视为您的情况的答案,因为您已经标记了它。这只是我的看法,并进行了一些测试。

我使用 SQL Server 2012 实例和 SSMS 版本创建了事件会话,减去应用程序名称事件。

IF EXISTS (SELECT name FROM sys.dm_xe_sessions WHERE Name = 'PySoup tracing')
BEGIN
    DROP EVENT SESSION [PySoup tracing] ON SERVER
END

CREATE EVENT SESSION [PySoup tracing] ON SERVER 
ADD EVENT sqlserver.rpc_completed (ACTION(sqlserver.sql_text )),
ADD EVENT sqlserver.sp_statement_completed (ACTION(sqlserver.sql_text )),
ADD EVENT sqlserver.sql_batch_completed (ACTION(sqlserver.sql_text )),
ADD EVENT sqlserver.sql_statement_completed (ACTION(sqlserver.sql_text ))
ADD TARGET package0.event_file(SET filename=N'tracing.xel')--,
--ADD TARGET package0.ring_buffer(SET max_events_limit=(1000000))
GO

ALTER EVENT SESSION [PySoup tracing] ON SERVER
    STATE = START;
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我从未关闭过实时数据查看器,也从未停止过会话。我进入了会话的属性并添加了client_app_name. 然后再次查看输出,并没有立即执行,但确实开始按预期显示应用程序名称。 在此处输入图片说明

从 SQL Server 2012 开始,您可以更改会话属性而无需停止和启动会话。所以我可以添加和删除字段,包括过滤器等,而不必费心停止/启动。在您的情况下,我不知道这是否属实,但实时数据视图确实会导致调度延迟发生变化。它可能需要一段时间才能把它捡起来。您可以从我对另一个问题的回答中了解这一点。