适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Microsoft Fabric 中的 SQL 数据库
此过程说明如何将扩展事件和 Windows 事件跟踪 (ETW) 配合使用来监视系统活动。 该过程还演示了如何使用CREATE EVENT SESSION和ALTER EVENT SESSIONDROP EVENT SESSION语句。
若要完成这些任务,需使用 SQL Server Management Studio 中的查询编辑器执行以下过程。 此过程还要求使用命令提示符运行 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
另请参阅
CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)
DROP EVENT SESSION (Transact-SQL)
扩展事件目录视图 (Transact-SQL)
扩展事件动态管理视图
SQL Server 扩展事件目标