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_nameist 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 für die zu löschenden Datensätze. job_idist 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 Datensatz, der im Verlauf beibehalten werden soll. 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 Verlaufs 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 des Verlaufs 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

Siehe auch

Verweis

sp_help_job (Transact-SQL)

sp_help_jobhistory (Transact-SQL)

Gespeicherte Systemprozeduren (Transact-SQL)

GRANT (Objektberechtigungen) (Transact-SQL)