適用於:SQL Server
Azure SQL Database
Azure SQL 受控執行個體
Microsoft Fabric 中的 SQL 資料庫
此程序說明如何搭配 Windows 事件追蹤 (ETW) 來使用擴充的事件,以監視系統活動。 此程序也示範如何使用 CREATE EVENT SESSION、ALTER EVENT SESSION 和 DROP EVENT SESSION 陳述式。
完成這些工作需要在 SQL Server Management Studio 中使用 Power Query 編輯器來進行以下程序。 此程序也需要使用命令提示字元來執行 ETW 命令。
使用擴充事件監視系統活動
在查詢編輯器中,執行下列陳述式來建立事件工作階段,並新增兩個事件。 這些 checkpoint_begin 和 checkpoint_end 事件會在資料庫檢查點開始和結束時觸發。
CREATE EVENT SESSION test0 ON SERVER ADD EVENT sqlserver.checkpoint_begin, ADD EVENT sqlserver.checkpoint_end WITH (MAX_DISPATCH_LATENCY = 1 SECONDS) go新增包含 32 個桶的分桶目標,用於根據資料庫 ID 計算檢查點的數量。
ALTER EVENT SESSION test0 ON SERVER ADD TARGET package0.histogram ( SET slots = 32, filtering_event_name = 'sqlserver.checkpoint_end', source_type = 0, source = 'database_id' ) go執行下列陳述式,以加入 ETW 目標。 如此將可讓您看到開頭和結束事件,這可用來判斷中斷點所花的時間長度。
ALTER EVENT SESSION test0 ON SERVER ADD TARGET package0.etw_classic_sync_target go發出下列陳述式,以啟動工作階段及開始事件收集。
ALTER EVENT SESSION test0 ON SERVER STATE = start go執行下列陳述式以觸發三個事件。
USE tempdb checkpoint go USE master checkpoint checkpoint go執行下列陳述式來查看事件計數。
SELECT CAST(xest.target_data AS xml) Bucketizer_Target_Data_in_XML FROM sys.dm_xe_session_targets xest JOIN sys.dm_xe_sessions xes ON xes.address = xest.event_session_address JOIN sys.server_event_sessions ses ON xes.name = ses.name WHERE xest.target_name = 'histogram' AND xes.name = 'test0' go在命令提示字元下,發出下列命令來檢視 ETW 資料。
注意
若要取得 tracerpt 命令的說明,請在命令提示字元上輸入
tracerpt /?。logman query -ets --- List the ETW sessions. This is optional. logman update XE_DEFAULT_ETW_SESSION -fd -ets --- Flush the ETW log. tracerpt %temp%\xeetw.etl -o xeetw.txt --- Dump the events so they can be seen.發出下列陳述式,以停止事件工作階段,並從伺服器中將它移除。
ALTER EVENT SESSION test0 ON SERVER STATE = STOP go DROP EVENT SESSION test0 ON SERVER go