最新新搭了一个SQLServer群集实例,在查看SQLAgent执行计划的时候,总是有一个系统任务执行失败。
那么这个任务是干嘛的呢?会不会影响数据库正常使用呢?
官方解释是:This procedure runs periodically via SQL Agent (msdb.dbo.sp_syspolicy_create_purge_job creates a SQL Agent job to run it), and it cleans out the execution history for the Policy-based managemen.
就不具体翻译了,大体就是它会定期的清除基于策略管理的一些历史记录。
说白了就是清一下log,那正常情况下不会影响数据库的正常使用。
当然你可以把它停了,但是作为程序员要有工匠精神不是吗?关键我还有洁癖(容不得半点系统错误)。
那我们看看它为什么失败吧,上图!
作业步骤在 PowerShell 脚本的行 1 中接收到错误。对应行为“(Get-Item SQLSERVER:\SQLPolicy\SQL-A-01\DEFAULT).EraseSystemHealthPhantomRecords()”。更正脚本并重新安排作业。PowerShell 返回的错误信息为“无法连接到服务器 。 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) ”. 进程退出代码 -1。. 该步骤失败。
说是在集群系统中会出现此问题,问题所在就是在执行PowerShell脚本的时候找不到服务器。给出的两个解决办法是:
方法 1︰ 编辑 syspolicy_purge_history 作业(推荐)
编辑步骤 3 中的syspolicy_purge_history作业。若要执行此操作,请执行以下步骤:
- 启动 SQL Server 管理 Studio。
- 展开SQL Server 代理,然后再展开作业。
- Syspolicy_purge_history,用鼠标右键单击,然后单击属性。
- 单击步骤。
- 擦除虚拟系统运行状况记录,请单击,然后单击编辑。
- 在命令框中,使用群集实例的虚拟服务器名称替换计算机节点名称。
- 单击确定,然后单击关闭。
方法 2︰ 重新创建 syspolicy_purge_history 作业
若要重新创建的syspolicy_purge_history作业,运行下面的事务处理 SQL 语句。
DECLARE @jobId uniqueidentifier
-- Obtain the current job identifier that is associated with the PurgeHistory
SELECT @jobId = CAST(current_value AS uniqueidentifier)
FROM msdb.dbo.syspolicy_configuration_internal
WHERE name = N'PurgeHistoryJobGuid'
-- Delete the job identifier association in the syspolicy configuration
DELETE FROM msdb.dbo.syspolicy_configuration_internal
WHERE name = N'PurgeHistoryJobGuid'
-- Delete the offending job
EXEC msdb.dbo.sp_delete_job @job_id = @jobId
-- Re-create the job and its association in the syspolicy configuration table
EXEC msdb.dbo.sp_syspolicy_create_purge_job
我的服务器有两个主机SQL-A-01和SQL-A-02,这两个做的群集。虽然上边写的不是很清楚,但是可以理解为这样,
上边报错的地方执行的脚本写的是SQLPolicy\SQL-A-01,这样的话在集群里是不能被识别的,需要用到集群里虚拟服务器名称。
我的虚拟服务器名称是:SQL-A,那就按照方案1的办法把第三步的Powershell脚本改成:
(Get-Item SQLSERVER:\SQLPolicy\SQL-A\DEFAULT).EraseSystemHealthPhantomRecords(),保存!
再次执行这个任务,成功!
这样再也不用备受报错的煎熬了。
分享给和我一样有偏执狂倾向的你吧,哈哈
简码笔记,让你的代码更加简约精炼。
转载请注明出处。