事件文件目标

事件文件目标是将完整缓冲区写入磁盘的目标。

下表描述了用于配置事件文件目标的可用选项。

选项 允许的值 DESCRIPTION
文件名 任何最多 260 个字符的字符串。 此值是必需的。 文件位置和文件名。

可以使用任何文件扩展名。
最大文件大小 任何 64 位整数。 此值是可选的。 最大文件大小(MB)。 如果未指定max_file_size,文件将增长到磁盘已满为止。 默认文件大小为 1GB。

max_file_size必须大于会话缓冲区的当前大小。 如果不是,则文件目标将无法初始化,并报告max_file_size无效。 若要查看缓冲区的当前大小,请查询sys.dm_xe_sessions动态管理视图中的 buffer_size 列。

如果默认文件大小小于会话缓冲区大小,建议将max_file_size设置为 sys.server_event_sessions 目录视图中max_memory列中指定的值。

当 max_file_size 设置为大于会话缓冲区大小时,它可能会向下取整到会话缓冲区大小的最接近倍数。 这可能会创建小于指定值max_file_size的目标文件。 例如,如果缓冲区大小为 100MB,并且max_file_size设置为 150MB,则生成的文件大小将向下舍入为 100MB,因为第二个缓冲区不适合剩余的 50MB 空间。

如果默认文件大小小于会话缓冲区大小,建议将max_file_size设置为 sys.server_event_sessions 目录视图中max_memory列中的值。
max_rollover_files (最大切换文件数) 任何 32 位整数。 此值是可选的。 在文件系统中保留的最大文件数。 默认值为 5。
增加 任何 32 位整数。 此值是可选的。 文件的增量增长,以兆字节(MB)为单位。 如果未指定,则增量的默认值是会话缓冲区大小的两倍。

首次创建事件文件目标时,指定的文件名将追加 _0_ 和长整数值。 整数值计算为 1601 年 1 月 1 日与创建文件的日期和时间之间的毫秒数。 后续滚动日志文件也使用此格式。 从检查长整数的值,可以确定最新的文件。 以下示例演示如何在将文件名选项指定为 C:\OutputFiles\MyOutput.xel 的方案中命名文件:

  • 创建的第一个文件 - C:\OutputFiles\MyOutput_0_128500310259380000.xel

  • 首个轮转文件 - C:\OutputFiles\MyOutput_0_128505831770890000.xel

  • 第二个接续文件 - C:\OutputFiles\MyOutput_0_132410772966237000.xel

将目标添加到会话

若要将事件文件目标添加到扩展事件会话,请在创建或更改事件会话时包括以下语句,并将 file_name 替换为所需的文件名和路径:

ADD TARGET package0.event_file(  
   SET filename='file_name.xel')  

查看目标输出

若要查看文件目标的输出,必须使用sys.fn_xe_file_target_read_file函数。 我们建议您将数据转换为 XML。 可以使用以下语法,将 file_name 替换为添加目标时指定的文件名和路径:

SELECT *, CAST(event_data AS XML) AS 'event_data_XML'  
FROM sys.fn_xe_file_target_read_file('file_name*.xel', NULL, NULL, NULL)  

另请参阅

SQL Server 扩展事件目标
sys.fn_xe_file_target_read_file(Transact-SQL)
CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)