使用扩展事件监视系统活动

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 数据库

此过程说明如何将扩展事件和 Windows 事件跟踪 (ETW) 配合使用来监视系统活动。 该过程还演示了如何使用CREATE EVENT SESSION和ALTER EVENT SESSIONDROP EVENT SESSION语句。

若要完成这些任务,需使用 SQL Server Management Studio 中的查询编辑器执行以下过程。 此过程还要求使用命令提示符运行 ETW 命令。

使用扩展事件监视系统活动

  1. 在查询编辑器中,发出下列语句创建事件会话并添加两个事件。 这两个事件 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  
    
  2. 添加包含 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  
    
  3. 执行以下语句以添加 ETW 目标。 这样您就可以看到起始事件和结束事件,借此确定检查点耗时多长时间。

    ALTER EVENT SESSION test0  
    ON SERVER  
    ADD TARGET package0.etw_classic_sync_target  
    go  
    
  4. 发出下列语句启动会话并开始事件收集。

    ALTER EVENT SESSION test0  
    ON SERVER  
    STATE = start  
    go  
    
  5. 执行以下语句以触发三个事件。

    USE tempdb  
          checkpoint  
    go  
    USE master  
          checkpoint  
          checkpoint  
    go  
    
  6. 执行以下语句以查看事件计数。

    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  
    
  7. 在命令提示符下,发出下列命令查看 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.  
    
  8. 发出下列语句停止事件会话并将其从服务器上删除。

    ALTER EVENT SESSION test0  
    ON SERVER  
    STATE = STOP  
    go  
    
    DROP EVENT SESSION test0  
    ON SERVER  
    go  
    

另请参阅

CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)
DROP EVENT SESSION (Transact-SQL)
扩展事件目录视图 (Transact-SQL)
扩展事件动态管理视图
SQL Server 扩展事件目标