SQL Server - トレースイベントに対応する拡張イベントを確認するクエリ

拡張イベントを調べています。勉強した小ネタを残していこうと思います。

今回はトレースイベントに対応する拡張イベントを確認するクエリです。sys.trace_eventsとsys.trace_xe_event_mapを使います。

例として次の2つのトレースイベントに対応する拡張イベントを取得したいとします。

クエリは次のような感じに。

-- トレースイベントに対応する拡張イベントを確認する
select
    te.trace_event_id as te_event_id,   -- トレースイベントID
    te.name as te_event_name,       -- トレースイベント名
    xe.package_name as xe_package_name, -- 拡張イベントパッケージ名
    xe.xe_event_name as xe_event_name   -- 拡張イベント名
from sys.trace_events as te
    inner join sys.trace_xe_event_map as xe
        on  te.trace_event_id = xe.trace_event_id
where
    te.name in (N'RPC:Completed', N'SQL:BatchCompleted');

-- 結果
/*
te_event_id  te_event_name        xe_package_name      xe_event_name
------------ -------------------- -------------------- --------------------
10           RPC:Completed        sqlserver            rpc_completed
12           SQL:BatchCompleted   sqlserver            sql_batch_completed
*/

いずれは拡張イベントでいわゆるスロークエリを取得したいと思っているのでこの2つのイベントを例として選んでみました。