在将 Windows 事件跟踪(ETW)用作目标之前,我们建议你了解 ETW。 ETW 跟踪与扩展事件一起使用,或用作扩展事件事件使用者。 以下外部链接提供了获取有关 ETW 的背景信息的起点:
- 使用 ETW 改进调试和性能优化 
ETW 目标是单一实例目标,尽管可将目标添加到多个会话。 如果事件在多个会话中触发,则该事件仅会在每次事件发生时传播到 ETW 目标。 扩展事件引擎仅限于每个进程的单个实例。
重要
若要使 ETW 目标正常工作,SQL Server 服务启动帐户必须是性能日志用户组的成员。
ETW 会话中存在的事件的配置由承载扩展事件引擎的进程控制。 引擎控制要引发的事件以及必须满足哪些条件才能发生事件。
在进程的生存期内首次将 ETW 目标附加到扩展事件会话后,ETW 目标将在 SQL Server 提供程序上打开单个 ETW 会话。 如果 ETW 会话已存在,则 ETW 目标获取对现有会话的引用。 此 ETW 会话在给定计算机上的所有 SQL Server 实例之间共享。 此 ETW 会话从具有 ETW 目标的会话接收所有事件。
由于 ETW 需要启用提供程序以处理事件并将其传递到 ETW,因此在会话中启用了所有扩展事件包。 当事件被触发时,ETW目标会将事件发送到启用该事件提供程序的会话。
ETW 目标支持在引发事件的线程上同步发布事件。 但是,ETW 目标不支持异步事件发布。
ETW 目标不支持由外部的 ETW 控制器(如 Logman.exe)进行控制。 若要生成 ETW 跟踪,必须使用 ETW 目标创建事件会话。 有关详细信息,请参阅 CREATE EVENT SESSION (Transact-SQL)。
注释
启用 ETW 目标将创建名为XE_DEFAULT_ETW_SESSION的 ETW 会话。 如果名称为XE_DEFAULT_ETW_SESSION的会话已存在,则会使用它而不修改现有会话的任何属性。 XE_DEFAULT_ETW_SESSION在 SQL Server 的所有实例之间共享。 启动XE_DEFAULT_ETW_SESSION后,必须使用 ETW 控制器(例如 Logman 工具)来停止它。 例如,可以在命令提示符处运行以下命令: logman stop XE_DEFAULT_ETW_SESSION -ets
下表介绍了用于配置 ETW 目标的可用选项。
| 选项 | 允许的值 | DESCRIPTION | 
|---|---|---|
| 默认_xe_会话_名称 | 任何最多 256 个字符的字符串。 此值是可选的。 | 扩展事件会话名称。 默认情况下,这是XE_DEFAULT_ETW_SESSION。 | 
| 默认_etw_会话_log文件路径 | 任何最多 256 个字符的字符串。 此值是可选的。 | 扩展事件会话的日志文件的路径。 默认情况下,这是 %TEMP%\ XEEtw.etl。 | 
| default_etw_session_logfile_size_mb | 任何无符号整数。 此值是可选的。 | 扩展事件会话的日志文件大小(MB)。 默认值为 20 MB。 | 
| 默认_etw_会话_缓冲区_大小_kb | 任何无符号整数。 此值是可选的。 | 扩展事件会话的内存缓冲区大小,以千字节(KB)为单位。 默认值为 128 KB。 | 
| 重试 | 任何无符号整数。 | 在删除事件之前,重试将事件发布到 ETW 子系统的次数。 默认值为 0。 | 
配置这些设置是可选的。 ETW 目标对这些设置使用默认值。
ETW 目标负责:
- 创建默认 ETW 会话。 
- 向 ETW 注册所有扩展事件包。 这可确保 ETW 不会删除事件。 
- 管理事件流向 ETW。 ETW 目标使用扩展事件数据创建 ETW 事件,并将其发送到相应的 ETW 会话。 如果事件大于缓冲区大小,或者数据不能容纳在一个 ETW 事件中,则 ETW 会将事件拆分为片段。 
- 始终启用扩展事件包。 
ETW 使用以下默认文件位置:
- ETW 输出文件位于 %TEMP%\XEEtw.etl 中。 - 重要 - 第一个会话启动后,无法更改文件路径。 
- 托管对象格式 (MOF) 文件位于 <安装路径>\Microsoft SQL Server\Shared 中。 有关详细信息,请参阅 MSDN 上的 托管对象格式 。 
将目标添加到会话
若要将 ETW 目标添加到扩展事件会话,必须在创建或更改事件会话时包含以下语句:
ADD TARGET package0.etw_classic_sync_target  
有关演示如何使用 ETW 目标的完整示例的详细信息,包括如何查看数据,请参阅 “使用扩展事件监视系统活动”。
另请参阅
              SQL Server 扩展事件目标
              sys.dm_xe_session_targets(Transact-SQL)
              CREATE EVENT SESSION (Transact-SQL)
              ALTER EVENT SESSION (Transact-SQL)