﻿# 在 SQL Server 叢集架構下 syspolicy_purge_history 作業失敗

最近發現我們有台 SQL Server 伺服器由 SQL Server Agent 所管理的其中一個 syspolicy\_purge\_history 作業發生執行失敗的問題，從記錄檔檢視器中得知是「無法連接到伺服器」的錯誤，進一步瞭解才得知原來這是在 SQL Server 叢集架構下才有可能會出現此問題。

**我看到的錯誤訊息是：**

> 以下列使用者的身分執行: MyAD\\SQLServiceAccount。作業步驟在 PowerShell 指令碼的第 1 行收到錯誤。對應的行是 '(Get-Item SQLSERVER:\\SQLPolicy\\**SQL1**\\DEFAULT).EraseSystemHealthPhantomRecords()'。請更正指令碼並將作業重新排程。PowerShell 傳回的錯誤資訊是: '無法連接到伺服器 。  建立連接至 SQL Server 時，發生網路相關或執行個體特定的錯誤。找不到或無法存取伺服器。確認執行個名稱是否正確，以及 SQL Server 是否設定為允許遠端連線。 (provider: 具名的管線提供者, error: 40 - 無法開啟至 SQL Server 的連接)  '.  處理序結束碼 -1。.  步驟失敗。

圖示如下：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/63b029ce1f0f07535870-image.png)

解決方法也很簡單，從錯誤訊息可以得知 PowerShell 指令碼在下指令時是對 **SQL1** 這台叢集節點進行連線，只要將其電腦名稱切換至 **叢集電腦名稱(SQL2K8)** 即可解決連線問題！

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/c51a7697bac4586d3956-image.png)

編輯第三個步驟：

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/bd02b8089ddc98668b11-image_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5e4ec219b6483224e87e-image.png)

修正「命令」將錯誤的電腦名稱修改成「**叢集電腦名稱**」即可！

[![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/60bf06e5b73665fb2073-image_thumb.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/718462531b085bc3d9c8-image.png)

**相關連結**

-   [The syspolicy\_purge\_history SQL Server Agent job may fail in SQL Server 2008](https://web.archive.org/web/20130618100321/http://support.microsoft.com/kb/955726/en-us)
-   [設定原則評估記錄的保留天數。「以原則為基礎的管理(Policy-Based Management，PBM)」，HistoryRetentionInDays](http://sharedderrick.blogspot.com/2009/01/policy-based-managementpbmhistoryretent.html)
