sp_purge_jobhistory (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Entfernt die Verlaufsdatensätze für einen Auftrag im SQL Server-Agent-Dienst.
Transact-SQL-Syntaxkonventionen
Syntax
sp_purge_jobhistory
[ [ @job_name = ] N'job_name' ]
[ , [ @job_id = ] 'job_id' ]
[ , [ @oldest_date = ] oldest_date ]
[ ; ]
Argumente
[ @job_name = ] N'job_name'
Der Name des Auftrags, für den die Verlaufsdatensätze gelöscht werden sollen. @job_name ist "sysname" mit der Standardeinstellung "NULL
. Entweder @job_id oder @job_name müssen angegeben werden, beide können jedoch nicht angegeben werden.
Member der festen Sysadmin-Serverrolle oder -Member der festen SQLAgentOperatorRole-Datenbankrolle können ausgeführt werden sp_purge_jobhistory
, ohne eine @job_name oder @job_id anzugeben. Wenn sysadmin-Benutzer diese Argumente nicht angeben, wird der Auftragsverlauf für alle lokalen und Multiserveraufträge innerhalb der durch @oldest_date angegebenen Zeit gelöscht. Wenn SQLAgentOperatorRole-Benutzer diese Argumente nicht angeben, wird der Auftragsverlauf für alle lokalen Aufträge innerhalb der durch @oldest_date angegebenen Zeit gelöscht.
[ @job_id = ] 'job_id'
Die ID des Auftrags für die zu löschenden Datensätze. @job_id ist eindeutiger Bezeichner mit einem Standardwert von NULL
. Entweder @job_id oder @job_name müssen angegeben werden, beide können jedoch nicht angegeben werden.
Informationen dazu, wie Sysadmin- oder SQLAgentOperatorRole-Benutzer dieses Argument verwenden können, finden Sie in der Beschreibung der @job_name.
[ @oldest_date = ] oldest_date
Der älteste Datensatz, der im Verlauf beibehalten werden soll. @oldest_date ist "datetime" mit einem Standardwert von NULL
. Wenn oldest_date angegeben wird, werden nur Datensätze entfernt, sp_purge_jobhistory
die älter als der angegebene Wert sind.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Resultset
Keine.
Hinweise
Nach sp_purge_jobhistory
erfolgreicher Ausführung wird eine Nachricht zurückgegeben.
Diese gespeicherte Prozedur teilt den Namen sp_purge_jobhistory
mit einem ähnlichen Objekt für den Azure Elastic Jobs-Dienst für Azure SQL-Datenbank. Informationen zur Version der elastischen Aufträge finden Sie unter jobs.sp_purge_jobhistory (Azure Elastic Jobs).
Berechtigungen
Standardmäßig können nur Mitglieder der festen Serverrolle sysadmin oder die feste SQLAgentOperatorRole-Datenbankrolle diese gespeicherte Prozedur ausführen. Mitglieder von sysadmin können den Auftragsverlauf für alle lokalen und multiserver-Aufträge löschen. Mitglieder von SQLAgentOperatorRole können den Auftragsverlauf nur für alle lokalen Aufträge löschen.
Anderen Benutzern, einschließlich Mitgliedern von SQLAgentUserRole und Mitgliedern von SQLAgentReaderRole, muss explizit die EXECUTE-Berechtigung 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. Ausführliche Informationen zu ihren Berechtigungen finden Sie unter SQL Server-Agent festen Datenbankrollen.
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
Nur Mitglieder der festen Serverrolle "sysadmin " und "Member" von SQLAgentOperatorRole können den Verlauf für alle Aufträge entfernen. Wenn sysadmin-Benutzer diese gespeicherte Prozedur ohne Parameter ausführen, wird der Auftragsverlauf für alle lokalen und multiserver-Aufträge gelöscht. Wenn SQLAgentOperatorRole-Benutzer diese gespeicherte Prozedur ohne Parameter ausführen, wird nur der Auftragsverlauf für alle lokalen Aufträge gelöscht.
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