Freigeben über


sp_purge_jobhistory (Transact-SQL)

Entfernt die Verlaufsdatensätze für einen Auftrag.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_purge_jobhistory 
   {   [ @job_name = ] 'job_name' | 
     | [ @job_id = ] job_id }
   [ , [ @oldest_date = ] oldest_date ]

Argumente

  • [ @job_name= ] 'job_name'
    Der Name des Auftrags, für den die Verlaufsdatensätze gelöscht werden sollen. job_name ist vom Datentyp sysname; der Standardwert ist NULL. Es muss entweder job_id oder job_name angegeben werden, beide Angaben sind jedoch nicht möglich.

    HinweisHinweis

    Mitglieder der festen sysadmin-Serverrolle oder Mitglieder der festen SQLAgentOperatorRole-Datenbankrolle können sp_purge_jobhistory ohne Angabe von job_name oder job_id ausführen. Wenn sysadmin-Benutzer diese Argumente nicht angeben, wird der Auftragsverlauf für alle lokalen und Multiserveraufträge innerhalb der durch oldest_date angegebenen Zeitspanne gelöscht. Wenn SQLAgentOperatorRole-Benutzer diese Argumente nicht angeben, wird der Auftragsverlauf für alle lokalen Aufträge innerhalb der durch oldest_date angegebenen Zeitspanne gelöscht.

  • [ @job_id= ] job_id
    Die ID des Auftrags zum Löschen der Datensätze. job_id ist vom Datentyp uniqueidentifier; der Standardwert ist NULL. Es muss entweder job_id oder job_name angegeben werden, beide Angaben sind jedoch nicht möglich. Beachten Sie die Anmerkung in der Beschreibung von @job_name, um Informationen dazu zu erhalten, wie sysadmin- oder SQLAgentOperatorRole-Benutzer dieses Argument verwenden können.

  • [ @oldest_date = ] oldest_date
    Der älteste im Verlauf beizubehaltende Datensatz. oldest_date ist vom Datentyp datetime; der Standardwert ist NULL. Wenn oldest_date angegeben wird, entfernt sp_purge_jobhistory nur Datensätze, die älter als der angegebene Wert sind.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

Keine

Hinweise

Bei erfolgreichem Abschluss von sp_purge_jobhistory wird eine Nachricht zurückgegeben.

Berechtigungen

Standardmäßig können nur Mitglieder der festen sysadmin-Serverrolle oder der festen SQLAgentOperatorRole-Datenbankrolle diese gespeicherte Prozedur ausführen. Mitglieder der sysadmin-Rolle können den Auftragsverlauf für alle lokalen und Multiserveraufträge leeren. Mitglieder der SQLAgentOperatorRole-Rolle können den Auftragsverlauf nur für alle lokalen Aufträge leeren.

Anderen Benutzern (einschließlich Mitgliedern der SQLAgentUserRole- oder SQLAgentReaderRole-Rolle) muss explizit die EXECUTE-Berechtigung für sp_purge_jobhistory erteilt werden. Nachdem die EXECUTE-Berechtigung für diese gespeicherte Prozedur erteilt wurde, können dieses Benutzer nur den Verlauf für Aufträge leeren, deren Besitzer sie sind.

Die festen Datenbankrollen SQLAgentUserRole, SQLAgentReaderRole und SQLAgentOperatorRole befinden sich in der msdb-Datenbank. Einzelheiten zu deren Berechtigungen finden Sie unter Feste Datenbankrollen des SQL Server-Agents.

Beispiele

A. Entfernen des Verlaufsprotokolls für einen bestimmten Auftrag

Im folgenden Beispiel wird der Verlauf eines Auftrags mit dem Namen NightlyBackups entfernt.

USE msdb ;
GO

EXEC dbo.sp_purge_jobhistory
    @job_name = N'NightlyBackups' ;
GO

B. Entfernen der Verlaufsprotokolle für alle Aufträge

HinweisHinweis

Nur Mitglieder der festen Serverrolle sysadmin und Mitglieder von SQLAgentOperatorRole können Verlaufsdatensätze für alle Aufträge entfernen. Wenn sysadmin-Benutzer diese gespeicherte Prozedur ohne Parameter ausführen, wird der Auftragsverlauf für alle lokalen und Multiserveraufträge geleert. Wenn SQLAgentOperatorRole-Benutzer diese gespeicherte Prozedur ohne Parameter ausführen, wird nur der Auftragsverlauf für alle lokalen Aufträge geleert.

Im folgenden Beispiel wird die Prozedur ohne Parameter ausgeführt, um alle Verlaufsdatensätze zu entfernen.

USE msdb ;
GO

EXEC dbo.sp_purge_jobhistory ;
GO