Der Syspolicy_purge_history Auftrag des SQL Server-Agents schlägt möglicherweise in SQL Server 2008 fehl


Problembeschreibung


In Microsoft SQL Server 2008 kann der Syspolicy_purge_history Auftrag des SQL Server-Agents fehlschlagen, wenn Sie den Syspolicy_purge_history Auftrag auf einer gruppierten Instanz ausführen. Möglicherweise wird eine Fehlermeldung angezeigt, die in der Verlaufsprotokolldatei für den Syspolicy_purge_history Auftrag wie folgt aussieht:
Datums -undUhrzeitProtokoll Auftragsverlauf (Syspolicy_purge_history) Schritt-ID 3Server sqlvirtualname\instanceName-Auftragsname syspolicy_purge_historyStep Namen löschen Phantom System Integritäts Einträge. Dauer 00:00:33Sql Schweregrad 0Sql Nachrichten-ID 0Operator e-Mail-Benachrichtigung des Netzbetreibers gesendete Wiederholungsversuche 0MessageExecuted als Benutzer: Benutzer. Im Auftrags Skript sind die folgenden Fehler aufgetreten. Diese Fehler haben das Skript nicht gestoppt: ein Auftragsschritt hat in einem PowerShell-Skript einen Fehler in Zeile 1 erhalten. Die entsprechende Zeile ist "(Get-Item SQLServer: \ sqlpolicy \sqlvirtualname\instanceName). EraseSystemHealthPhantomRecords()'. Korrigieren Sie das Skript, und planen Sie den Auftrag erneut ein. Die von PowerShell zurückgegebenen Fehlerinformationen sind: "SQL Server PowerShell-Anbieterfehler: konnte keine Verbindung zu"sqlvirtualname\instanceName"herstellen. [Fehler beim Herstellen einer Verbindung mit dem Server sqlvirtualname\instanceName. --> beim Herstellen einer Verbindung mit dem Server ist ein Fehler aufgetreten. Dieser Fehler kann beim Herstellen einer Verbindung mit SQL Server 2005 durch die Tatsache verursacht werden, dass SQL Server unter den Standardeinstellungen keine Remoteverbindungen zulässt. (Anbieter: Named Pipes-Anbieter, Fehler: 40 – eine Verbindung mit SQL Server konnte nicht geöffnet werden)] Fehler beim Herstellen einer Verbindung mit dem Server sqlvirtualname\instanceName. Beim Herstellen einer Verbindung mit dem Server ist ein Fehler aufgetreten. Dieser Fehler kann beim Herstellen einer Verbindung mit SQL Server 2005 durch die Tatsache verursacht werden, dass SQL Server unter den Standardeinstellungen keine Remoteverbindungen zulässt. (Anbieter: Named Pipes-Anbieter, Fehler: 40 – eine Verbindung mit SQL Server konnte nicht geöffnet werden) "Ein Auftragsschritt hat bei Zeile 1 in einem PowerShell-Skript einen Fehler erhalten. Die entsprechende Zeile ist "(Get-Item SQLServer: \ sqlpolicy \sqlvirtualname\instanceName). EraseSystemHealthPhantomRecords()'. Korrigieren Sie das Skript, und planen Sie den Auftrag erneut ein. Die von PowerShell zurückgegebenen Fehlerinformationen sind: "der Pfad kann nicht gefunden werden" SQLServer: \ sqlpolicy \sqlvirtualname\instanceName", weil er nicht vorhanden ist. "Ein Auftragsschritt hat bei Zeile 1 in einem PowerShell-Skript einen Fehler erhalten. Die entsprechende Zeile ist "(Get-Item SQLServer: \ sqlpolicy \sqlvirtualname\instanceName). EraseSystemHealthPhantomRecords()'. Korrigieren Sie das Skript, und planen Sie den Auftrag erneut ein. Die von PowerShell zurückgegebenen Fehlerinformationen sind: "Sie können keine Methode für einen NULL Wertausdruck aufrufen. '. Prozess-Exitcode-1. Fehler beim Schritt.

Ursache


Dieses Problem kann auftreten, wenn der Syspolicy_purge_history Auftrag anstelle des virtuellen Server namens für die Clusterinstanz den Namen des Computer Knotens verwendet.

Lösung


Verwenden Sie eine der folgenden Methoden, um das Problem zu beheben.

Methode 1: Bearbeiten des Syspolicy_purge_history Auftrags

Bearbeiten Sie Schritt 3 des Syspolicy_purge_history Auftrags. Gehen Sie dazu wie folgt vor:
  1. Starten Sie SQL Server Management Studio.
  2. Erweitern Sie den SQL Server-Agent, und erweitern Sie dann Aufträge.
  3. Klicken Sie mit der rechten Maustaste auf Syspolicy_purge_history, und klicken Sie dann auf Eigenschaften.
  4. Klicken Sie auf Schritte.
  5. Klicken Sie auf Phantom System Integritäts Einträge löschen, und klicken Sie dann auf Bearbeiten.
  6. Ersetzen Sie im Feld Befehl den Namen des Computer Knotens, indem Sie den Namen des virtuellen Servers für die Clusterinstanz verwenden.
  7. Klicken Sie auf OK und anschließend auf Schließen.

Methode 2: Erneutes Erstellen des Syspolicy_purge_history Auftrags

Wenn Sie den Syspolicy_purge_history Auftrag erneut erstellen möchten, führen Sie die folgende Transact-SQL-Anweisung aus.
DECLARE @jobId uniqueidentifier-- Obtain the current job identifier that is associated with the PurgeHistorySELECT @jobId = CAST(current_value AS uniqueidentifier)FROM msdb.dbo.syspolicy_configuration_internalWHERE name = N'PurgeHistoryJobGuid'-- Delete the job identifier association in the syspolicy configurationDELETE FROM msdb.dbo.syspolicy_configuration_internalWHERE name = N'PurgeHistoryJobGuid'-- Delete the offending jobEXEC msdb.dbo.sp_delete_job @job_id = @jobId-- Re-create the job and its association in the syspolicy configuration tableEXEC msdb.dbo.sp_syspolicy_create_purge_job

Weitere Informationen


In SQL Server 2008-Setup fragt das Setupskript das Datenbankmodul nach dem Computernamen ab. Wenn das Setup Skript den Computernamen abfragt, ist das Datenbankmodul dem Cluster nicht bekannt. Daher gibt Datenbankmodul den Computernamen anstelle des Clusternamens zurück.