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

此过程说明了如何将扩展事件与 Windows 事件跟踪(ETW)一起使用来监视系统活动。 此过程还演示了如何使用 CREATE EVENT SESSION、ALTER EVENT SESSION 和 DROP 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 扩展事件目标