檢視同等於 SQL 追蹤事件類別的擴充事件項目

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

如果您想要使用「擴充事件」來收集同等於 SQL 追蹤事件類別和資料行的事件資料,了解 SQL 追蹤事件如何對應到「擴充事件」事件和動作會非常實用。

您可以使用下列程序來檢視同等於每一個 SQL 追蹤事件及其關聯資料行的「擴充事件」事件和動作。

若要使用查詢編輯器檢視相當於 SQL 追蹤事件的擴充事件

  • 從 SQL Server Management Studio 中的查詢編輯器執行以下查詢:

    USE MASTER;
    GO
    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         te
        LEFT JOIN sys.trace_xe_event_map   em ON te.trace_event_id  = em.trace_event_id
        LEFT JOIN sys.trace_event_bindings tb ON em.trace_event_id  = tb.trace_event_id
        LEFT JOIN sys.trace_columns        tc ON tb.trace_column_id = tc.trace_column_id
        LEFT JOIN sys.trace_xe_action_map  am ON tc.trace_column_id = am.trace_column_id
    ORDER BY te.name, tc.name
    

當您檢視結果時,請注意下列事項:

  • 如果事件類別資料行以外的所有其他資料行都傳回 NULL,表示並未從 SQL 追蹤移轉事件類別。

  • 如果只有擴充事件動作資料行中的值為 NULL,表示下列其中一個條件成立:

    • SQL 追蹤資料行對應到與「擴充事件」事件相關聯的其中一個資料欄位。

      注意

      每一個「擴充事件」事件都有一組預設資料欄位,這些欄位會自動包含在結果集內。

    • 此動作資料行並沒有有意義的「擴充事件」同等項目。 其中一個範例就是 SQL 追蹤中的 EventClass 資料行。 「擴充事件」中不需要此資料行,因為事件名稱有相同的用途。

  • 如果是使用者可設定的 SQL 追蹤事件類別 (透過 UserConfigurable:9 的 UserConfigurable:1),擴充事件會使用單一事件來取代這些項目。 此事件命名為 user_event。 這個事件是使用 sp_trace_generateevent 所引發,這與 SQL 追蹤所使用的預存程序相同。 不論傳遞給預存程序的事件識別碼為何,都會傳回 user_event 事件。 但是,event_id 欄位會當作事件資料的一部分傳回。 這可讓您建立以事件識別碼為基礎的述詞。 例如,如果您在程式碼中使用 UserConfigurable:0 (事件識別碼 = 82),您可以將 user_event 事件加入至工作階段中,並指定 'event_id = 82' 的述詞。 因此,您不必變更程式碼,因為 sp_trace_generateevent 預存程序會產生擴充事件 user_event 事件及同等的 SQL 追蹤事件類別。

另請參閱

sp_trace_generateevent (Transact-SQL)