【问题标题】:SQL Server : How to display all extended event tablesSQL Server:如何显示所有扩展事件表
【发布时间】:2015-07-20 22:28:30
【问题描述】:

当我运行查询时

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

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

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 2018-07-27
      • 2012-12-26
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      相关资源
      最近更新 更多