適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft 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:1到UserConfigurable: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 追蹤事件類別。