适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 预览版中的 SQL 数据库
了解 SQL 跟踪事件如何映射到扩展事件和操作。 可以收集等效于 SQL 跟踪事件类和列的事件数据。
您可以使用以下过程查看与各 SQL 跟踪事件及其关联列等效的扩展事件的事件和操作。
若要运行 T-SQL 命令,请使用 SQL Server Management Studio (SSMS)、 Visual Studio Code、 sqlcmd 的 MSSQL 扩展或你喜欢的 T-SQL 查询工具。
使用查询编辑器查看等效于 SQL 跟踪事件的扩展事件
在 SQL Server Management Studio 中的 查询编辑器 中,运行以下查询:
SELECT DISTINCT tb.trace_event_id, te.name AS 'Event Class', em.package_name AS 'Package', em.xe_event_name AS 'XEvent Name', tb.trace_column_id, tc.name AS 'SQL Trace Column', am.xe_action_name AS 'Extended Events action' FROM sys.trace_events AS te LEFT JOIN sys.trace_xe_event_map AS em ON te.trace_event_id = em.trace_event_id LEFT JOIN sys.trace_event_bindings AS tb ON em.trace_event_id = tb.trace_event_id LEFT JOIN sys.trace_columns AS tc ON tb.trace_column_id = tc.trace_column_id LEFT JOIN sys.trace_xe_action_map AS am ON tc.trace_column_id = am.trace_column_id ORDER BY te.name, tc.name;
注意:
如果除
Event Class列之外的所有列都返回NULL,则事件类未从 SQL 跟踪迁移。如果在
Extended Events action列中只有值为NULL,那么以下任一条件为真:映射到与扩展事件关联的数据字段之一
SQL Trace column。每个扩展事件的事件都具有在结果集中自动包括的数据字段的默认集合。
该
action列没有有意义的等效扩展事件。 例如 SQL 跟踪中的EventClass列。 该列不是扩展事件中所必需的,因为事件名称起到相同作用。
扩展事件使用单个事件替换用户可配置的 SQL 跟踪事件类(
UserConfigurable:1通过UserConfigurable:9)。 事件命名user_event。 此事件是使用sp_trace_generateevent引发的,该存储过程与 SQL 跟踪使用的存储过程相同。 无论将哪个事件 ID 传递到存储过程,该事件都会返回user_event。 但是,event_id字段作为事件数据的一部分返回,可用于基于事件 ID 生成谓词。 例如,如果在代码中使用UserConfigurable:0(事件 ID = 82),则可以将user_event事件添加到会话,并指定谓词event_id = 82。 因此,无需更改代码,因为sp_trace_generateevent存储过程会生成扩展事件user_event事件和等效的 SQL 跟踪事件类。