如何正确配置SQL Server Profiler 避免每小时停止运行的问题
SQL Server Profiler跟踪Analysis Services自动停止解决方案
问题根因
Profiler默认配置了1小时的自动停止阈值,同时未配置滚动更新策略导致缓冲区满后自动停止,另外客户端跟踪本身的稳定性限制也会导致运行中断。
正确配置步骤
- 取消自动停止时间限制
新建跟踪连接到Analysis Services实例后,打开跟踪属性的常规选项卡,取消勾选启用跟踪停止时间;如果需要按日归档,可以将停止时间设置为当日23:59:59,配合SQL Server代理作业次日自动重建新跟踪。 - 配置滚动更新与存储策略
- 在事件选择选项卡勾选所有需要捕获的AS运行事件,仅保留必要事件避免性能损耗
- 切换到事件提取设置选项卡,勾选
启用文件滚动更新,设置单文件大小上限为1~2GB,同时勾选保存到表,选择目标SQL Server实例、库和指定数据表,取消勾选达到最大行数时停止跟踪,可根据存储需求设置合理的最大行数阈值。
- 调整缓冲区提升稳定性
进入跟踪属性的高级选项卡,将缓冲区大小调整为30720KB(30MB)以上,可根据服务器剩余内存适当上调,勾选服务器进程跟踪数据选项,避免客户端内存不足导致跟踪中断。 - (推荐)改用服务端跟踪替代客户端Profiler
Profiler是客户端工具,网络波动、客户端进程异常都会导致跟踪中断,长期运行场景建议使用XMLA脚本创建AS服务端跟踪,示例脚本如下:
服务端跟踪创建后可通过SQL Server代理作业每日定时调度,自动停止前一日跟踪并创建新跟踪,将生成的trc文件定期导入目标SQL表即可。<Create xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> <ObjectDefinition> <Trace> <ID>AS_Daily_Log_Trace</ID> <Name>AS每日运行日志跟踪</Name> <LogFileName>C:\AS_Trace\Daily_Trace.trc</LogFileName> <LogFileSize>2048</LogFileSize> <LogFileRollover>true</LogFileRollover> <StopTime>2024-05-20T23:59:59</StopTime> <!-- 下方配置需要捕获的事件 --> <Events> <Event> <EventID>0</EventID> <Columns> <ColumnID>0</ColumnID> <ColumnID>1</ColumnID> </Columns> </Event> </Events> </Trace> </ObjectDefinition> </Create>
额外注意事项
- 运行跟踪的账号需要具备Analysis Services服务器管理员权限,以及目标SQL数据表的写入权限
- 生产环境使用时避免捕获所有事件,仅保留查询、处理、错误等必要事件,降低对AS实例的性能影响
- 若需要7*24小时无间断日志采集,可配置两个跟踪作业轮换启停,避免单日跟踪切换时出现日志缺口
内容的提问来源于stack exchange,提问作者Nilton Henrique
相关产品推荐
相关产品推荐

