共用方式為


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

適用於:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric 中的 SQL 資料庫

瞭解 SQL 追蹤事件如何對應至擴充事件事件和動作。 您可以收集相當於 SQL 追蹤事件類別和資料行的事件資料。

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

若要執行 T-SQL 命令,請使用 SQL Server Management Studio (SSMS)、Visual Studio Code 的 MSSQL 延伸模組sqlcmd 或您最愛的 T-SQL 查詢工具。

使用查詢編輯器檢視與 SQL 追蹤事件等效的擴充事件

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

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

注意:

  • 如果所有欄位都返回NULL,除了Event Class欄位,則事件類別未從 SQL 追蹤移轉。

  • 如果只有欄位中的 Extended Events action 值為 NULL,則以下任一條件成立:

    • SQL Trace column 映射到與延伸事件關聯的其中一個資料欄位。

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

    • action 欄沒有有意義的擴充事件對等項目。 例如,SQL 追蹤中的EventClass欄位。 「擴充事件」中不需要此資料行,因為事件名稱有相同的用途。

  • 延伸事件會使用單一事件來取代使用者可配置的 SQL 追蹤事件類別 (UserConfigurable:1UserConfigurable:9)。 該事件名為 user_event。 此事件是使用 sp_trace_generateevent引發的,這是 SQL 追蹤所使用的相同預存程序。 user_event無論將哪個事件識別碼傳遞至預存程序,都會傳回事件。 不過,會傳回欄位 event_id 作為事件資料的一部分,您可以使用該欄位來根據事件 ID 建置述詞。 例如,如果您在程式碼中使用 UserConfigurable:0(事件識別碼 = 82),則可以將 user_event 事件新增至會話中,並指定述詞 event_id = 82。 因此,您不需要變更程式碼,因為 sp_trace_generateevent 預存程序會產生擴充事件 user_event 事件,以及對等的 SQL 追蹤事件類別。