我尝试了以下代码来创建扩展事件会话。
CREATE EVENT SESSION xetest
ON SERVER
ADD EVENT rpc_completed
ADD TARGET package0.event_file
(SET filename = N'result.xel', max_file_size = (60), max_rollover_files = (5))
WITH (
MAX_MEMORY = 512000KB,
EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 30 SECONDS,
MAX_EVENT_SIZE = 0KB,
MEMORY_PARTITION_MODE = NONE,
TRACK_CAUSALITY = OFF,
STARTUP_STATE = OFF
);
但是,我在运行它时收到以下错误消息。
Msg 25641, Level 16, State 0, Line 13
For target, "package0.event_file", the parameter "max_file_size" passed is invalid.
Target parameter at index 1 is invalid
我做了一些调查,发现了这个:
max_file_size
必须大于会话缓冲区的当前大小。如果不是,文件目标将无法初始化,报告无效max_file_size
。要查看缓冲区的当前大小,请查询动态管理视图buffer_size
中的列sys.dm_xe_sessions
。
问题是sys.dm_xe_sessions
Returns information about server-scoped active extended events sessions。因为我试图创建的扩展事件会话还不存在。所以我无法查询sys.dm_xe_sessions
并获取它的buffer_size
列。max_file_size
在这种情况下,我如何知道可以在语句中使用的正确最小值CREATE EVENT SESSION
?
你的错误在这一行:
这是您的扩展事件的缓冲区大小。如错误所述,您的
max_file_size
设置必须大于此。显然,您使用的数字 (60 MB) 不大于您使用的数字MAX_MEMORY
(500 MB)。此外,正如其中一条评论中提到的,500 MB 对于扩展事件会话来说是一个相当大的缓冲区大小。通常您最多不需要超过 8 MB 或什至 16 MB。