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)

步驟識別碼 3
伺服器 SQLVirtualName \ instancename
工作名稱 syspolicy_purge_history
步驟名稱清除虛設系統健全狀況記錄。
持續時間 00: 00: 33
Sql 嚴重性 0
Sql 郵件識別碼為 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 並不允許遠端連線。(提供者: 具名管道 Provider 錯誤: 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 所傳回的錯誤資訊是: ' 您不能在 Null 值的運算式上呼叫方法。 '. 處理序結束碼為-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
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本: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