每日出现sqlsqm.exe未处理异常报错,请求技术排查协助
解决sqlsqm.exe触发的System.IO.FileLoadException报错
我之前碰到过好几次这个报错,sqlsqm.exe是SQL Server自带的服务质量监控工具,它的崩溃基本都是因为依赖的程序集加载失败,下面是我亲测有效的排查和修复步骤:
1. 先修复.NET Framework 4.0
报错里明确标注了Framework版本是v4.0.30319,优先排查这个版本的.NET是否损坏:
- 以管理员身份打开命令提示符,运行系统文件扫描修复命令:
这个命令会自动扫描并修复系统中损坏的文件,包括.NET相关的核心组件。sfc /scannow - 如果sfc修复无效,直接下载.NET Framework 4.0的安装包,覆盖安装后重启系统,确保组件完整。
2. 修复SQL Server的SQM相关组件
报错的核心是Microsoft.SqlServer.Sqm.Launcher.Main方法抛出异常,说明SQL Server的SQM组件可能损坏或缺失:
- 打开SQL Server安装中心,切换到「维护」标签页,选择「修复」选项,选中对应的SQL Server实例后按照向导完成修复,安装程序会自动校验并修复缺失的SQM相关程序集。
- 修复完成后,重启SQL Server服务和SQL Server Agent服务,确保组件生效。
3. 检查sqlsqm.exe的运行权限
有时候进程权限不足,会导致无法读取依赖的DLL文件:
- 找到
sqlsqm.exe的默认路径(一般在C:\Program Files\Microsoft SQL Server\<你的SQL版本号>\Shared),右键点击文件选择「属性」→「安全」标签,确认SQL Server的服务账号(比如NT SERVICE\MSSQLSERVER)拥有「读取和执行」的权限。 - 如果权限缺失,添加对应账号并赋予读取执行权限,之后重启相关服务。
4. 临时禁用SQM收集(应急方案)
如果需要先停止日志刷屏,可以暂时关闭SQL Server的SQM数据收集功能:
- 打开SQL Server Management Studio(SSMS)连接到目标实例,执行以下T-SQL命令:
这个操作会阻止sp_configure 'show advanced options', 1; RECONFIGURE; sp_configure 'SQL Server System Monitor', 0; RECONFIGURE;sqlsqm.exe启动,但只是临时解决,建议还是完成前面的排查找到根本原因。
内容的提问来源于stack exchange,提问作者vannak
相关产品推荐
相关产品推荐

