升级至SQL Server 2012后syspolicy_purge_history作业Erase步骤失败求助
解决SQL Server 2012 syspolicy_purge_history作业「Erase Phantom System Health Records」步骤失败问题
这个问题的根源很明确:你的系统PowerShell执行策略设置为禁止运行脚本,导致SQL Server无法加载SQLPS模块完成作业步骤。下面是一步步的解决方法:
步骤1:以管理员身份启动PowerShell
因为修改执行策略需要系统级权限,一定要右键点击PowerShell图标,选择「以管理员身份运行」。
步骤2:查看当前执行策略
在PowerShell中输入以下命令,确认当前的限制状态:
Get-ExecutionPolicy
通常会返回 Restricted——这个策略完全禁止运行任何PowerShell脚本,正是导致报错的原因。
步骤3:修改执行策略为RemoteSigned
输入以下命令,将执行策略调整为兼顾安全与功能的设置:
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
执行后会弹出确认提示,输入 Y 并回车确认即可。
为什么选RemoteSigned?这个策略允许运行本地创建的脚本(比如SQL Server自带的SQLPS模块脚本),但要求从互联网下载的脚本必须有数字签名,是微软推荐的默认设置之一,既满足SQL Server作业的需求,又不会过度降低系统安全性。
步骤4:验证修改结果
再次运行查看命令,确认策略已更新:
Get-ExecutionPolicy
此时应该返回 RemoteSigned。
步骤5:重新执行作业
回到SQL Server代理,找到syspolicy_purge_history作业,右键选择「启动作业」,或者直接手动执行「Erase Phantom System Health Records」步骤,应该就能正常运行了。
额外注意事项
- 64位系统无需特意切换到32位PowerShell,
-Scope LocalMachine的设置会同时应用到32位和64位环境。 - 修改执行策略后无需重启SQL Server服务,设置立即生效。
内容的提问来源于stack exchange,提问作者Noor
相关产品推荐
相关产品推荐

