如何停止MSSQL每秒生成的SQL Server Profiler跟踪数据文件
停止MSSQL持续生成跟踪文件的操作方案
问题背景
MSSQL数据库每秒生成两个SQL Server Profiler跟踪数据文件,占用大量内存,需停止该跟踪操作。已完成以下排查:
- 执行
SELECT * FROM sys.traces返回空结果,确认无传统SQL跟踪运行 - 执行
SELECT * FROM sys.server_event_sessions得到对应结果(见截图) - 执行Extended Events查询:
SELECT s.name, CAST(st.target_data AS XML).value('(/EventFileTarget/File/@name)[1]', 'NVARCHAR(100)') FROM sys.dm_xe_sessions s INNER JOIN sys.dm_xe_session_targets st ON s.address = st.event_session_address WHERE target_name = 'event_file'
得到对应结果(见截图),其中system_health文件有内容,hkenginexesession文件为空。
停止跟踪的具体步骤
- 定位目标会话:从
sys.dm_xe_sessions的查询结果中,找到对应生成跟踪文件的会话名称(比如你提到的hkenginexesession或其他可疑会话)。 - 停止目标Extended Events会话:执行以下T-SQL命令(替换
[会话名称]为实际找到的名称):
ALTER EVENT SESSION [会话名称] ON SERVER STATE = STOP;
- (可选)彻底禁用会话:若无需该会话再次运行,执行命令删除它,避免重启后自动启动:
DROP EVENT SESSION [会话名称] ON SERVER;
补充说明
- 传统SQL跟踪已排除,问题根源在Extended Events会话
system_health是SQL Server默认健康监控会话,不建议停止,重点排查自定义会话- 若
hkenginexesession是生成文件的源头,直接停止并删除即可
内容的提问来源于stack exchange,提问作者Christian29
相关产品推荐
相关产品推荐

