1

当我运行我的查询

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

我发现又添加了 2 个表,trace_xe_action_map然后trace_xe_event_map我意识到这两个兄弟姐妹来自扩展事件,但我记得将它们插入到我的数据库中。然而我不知道xtype他们都属于哪个。因为如果我在 SQL Server Management Studio 中运行上述查询;我将找不到他们。我应该进行什么查询才能在 SQL Server Management Studio 中显示它们?

4

1 回答 1

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 跟踪事件类等效的扩展事件事件:

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
于 2015-05-10T11:43:34.053 回答