SQL Server:如何显示所有扩展事件表

时间:2015-05-10 10:36:02

标签: sql-server tsql database-table extended-events

当我运行查询时

SELECT * FROM sys.sysobjects WHERE xtype = 'U'

我发现还有2个表添加了trace_xe_action_maptrace_xe_event_map,我意识到这两个兄弟姐妹来自扩展事件,但我记得将它们插入到我的数据库中。但我不知道他们属于哪个xtype。因为如果我在SQL Server Management Studio中运行上述查询;我无法找到它们。我应该在SQL Server Management Studio中显示哪些查询?

1 个答案:

答案 0 :(得分:3)

  

trace_xe_action_map(Transact-SQL)
  每个扩展事件操作包含一行,映射到SQL跟踪列ID。该表存储在sys数据库的主数据库中   适用于:SQL Server 2012 +。

  

trace_xe_event_map(Transact-SQL)
  每个扩展事件事件包含一行,映射到SQL跟踪事件类。该表存储在sys数据库的主数据库中   适用于:SQL Server 2012 +。

您可以使用以下查询来标识与SQL Trace事件类等效的扩展事件事件:

SELECT te.name, xe.package_name, xe.xe_event_name
FROM sys.trace_events AS te
LEFT JOIN sys.trace_xe_event_map AS xe
   ON te.trace_event_id = xe.trace_event_id
WHERE xe.trace_event_id IS NOT NULL

并非所有事件类都具有等效的扩展事件事件。您可以使用以下查询列出没有等效扩展事件的事件类:

SELECT te.trace_event_id, te.name
FROM sys.trace_events AS te
LEFT JOIN sys.trace_xe_event_map AS xe
   ON te.trace_event_id = xe.trace_event_id
WHERE xe.trace_event_id IS NULL

执行此查询:

SELECT *
FROM sys.all_objects    -- also FROM sys.system_objects
WHERE name like 'trace_xe_%'

你会得到这样的结果:

name                | object_id  | type | type_desc  
--------------------+------------+------+------------
trace_xe_action_map | -463397375 | U    | USER_TABLE
trace_xe_event_map  | -319884821 | U    | USER_TABLE