Windows 目标的事件跟踪

在将 Windows 事件跟踪(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)