syspolicy_purge_history SQL Server 代理作业可能会失败 SQL Server 2008 年

文章翻译 文章翻译
文章编号: 955726 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

在 Microsoft SQL Server 2008,群集实例上运行 syspolicy_purge_history 作业时,可能无法 syspolicy_purge_history SQL Server 代理作业。您可能会收到类似于在 syspolicy_purge_history 作业的历史记录日志文件以下内容的错误消息:
日期的 datetime
日志作业历史记录 (syspolicy_purge_history)

步骤 ID 3
服务器 SQLVirtualName \ instancename
作业名称 syspolicy_purge_history
步骤名称擦除幻像系统健康记录框中。
持续时间 00: 00: 33
Sql 严重级别为 0
Sql 邮件 ID 为 0
通过电子邮件发送的运算符
运算符网络发送
分页的运算符
重试尝试 0

消息
作为用户执行: user。作业脚本遇到了以下错误。这些错误未停止该脚本: 一个作业步骤收到 PowerShell 在脚本中的第 1 行处错误。在相应的行是 '(Get-Item SQLSERVER:\SQLPolicy\SQLVirtualName\instancename).EraseSystemHealthPhantomRecords()。

更正该脚本,然后再重新安排作业一次。PowerShell 所返回的错误信息是: SQL Server PowerShell 提供程序错误: 无法连接到 SQLVirtualName \ instancename。[未能连接到服务器 SQLVirtualName \ instancename--> 错误时,出现了建立到服务器的连接。

连接到 SQL Server 2005 时, 这种失败可能导致这一事实在默认设置下 SQL Server 不允许远程连接。(provider: Named Pipes Provider, error: 40-Could not open a connection to SQL Server)]未能连接到服务器 SQLVirtualName \ instancename。建立到服务器的连接时出错。连接到 SQL Server 2005 时, 这种失败可能导致这一事实在默认设置下 SQL Server 不允许远程连接。(提供程序: 命名错误上的管道提供程序: 40-无法打开到 SQL Server 连接) '

作业步骤 PowerShell 在脚本中收到第 1 行处出错。在相应的行是 '(Get-Item SQLSERVER:\SQLPolicy\SQLVirtualName\instancename).EraseSystemHealthPhantomRecords()。更正该脚本,然后再重新安排作业一次。PowerShell 所返回的错误信息是: 找不到路径 SQLSERVER:\SQLPolicy\ SQLVirtualName \ instancename ' 由于它不存在。作业步骤收到 PowerShell 在脚本中的第 1 行处错误。在相应的行是 '(Get-Item SQLSERVER:\SQLPolicy\SQLVirtualName\instancename).EraseSystemHealthPhantomRecords()。更正该脚本,然后再重新安排作业一次。PowerShell 所返回的错误信息是: 您不能对空值的表达式中调用方法。 '. 进程退出代码为-1。该步骤失败。

原因

如果 syspolicy_purge_history 作业使用此计算机的节点名称,而不是群集实例的虚拟服务器名称,则可能会出现此问题。

解决方案

若要解决此问题,使用下列方法之一。

方法 1: 编辑 syspolicy_purge_history 作业

编辑 syspolicy_purge_history 作业的第 3 步。若要这样做,请按照下列步骤操作:
  1. 启动 SQL Server 管理 Studio。
  2. 展开 SQL Server 代理,然后再展开 作业
  3. 用鼠标右键单击 syspolicy_purge_history,然后单击 属性
  4. 单击 步骤
  5. 单击 删除幻像系统健康记录,然后单击 编辑
  6. 命令 框中,可以通过使用群集实例的虚拟服务器名称替换计算机节点名称。
  7. 单击 确定,然后单击 关闭

方法 2: 重新创建 syspolicy_purge_history 作业

若要重新创建 syspolicy_purge_history 作业,运行下面的 TRANSACT-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 Server 2008 设置,安装脚本将查询用作计算机名,数据库引擎。当安装脚本将查询用作计算机名时,尚不了解群集的数据库引擎。因此,数据库引擎返回计算机名称,而不是群集名称。

属性

文章编号: 955726 - 最后修改: 2009年3月19日 - 修订: 2.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Developer
关键字:?
kbmt sql2008relnotetools sql2008relnote kberrmsg kbtshoot kbprb KB955726 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 955726
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com