Freigeben über


sp_delete_job (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Löscht einen Auftrag aus dem SQL Server-Agent-Dienst.

Transact-SQL-Syntaxkonventionen

Syntax

sp_delete_job
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @originating_server = ] N'originating_server' ]
    [ , [ @delete_history = ] delete_history ]
    [ , [ @delete_unused_schedule = ] delete_unused_schedule ]
[ ; ]

Argumente

[ @job_id = ] 'job_id'

Die Identifikationsnummer des zu löschenden Auftrags. @job_id ist eindeutiger Bezeichner mit einem Standardwert von NULL.

Entweder @job_id oder @job_name müssen angegeben werden. Beide können nicht angegeben werden.

[ @job_name = ] N'job_name'

Der Name des Auftrags, der gelöscht werden soll. @job_name ist "sysname" mit der Standardeinstellung "NULL.

Entweder @job_id oder @job_name müssen angegeben werden. Beide können nicht angegeben werden.

[ @originating_server = ] N'originating_server'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @delete_history = ] delete_history

Gibt an, ob der Verlauf für den Auftrag gelöscht werden soll. @delete_history ist bit, mit einem Standardwert von 1.

  • Wenn @delete_history ist 1, wird der Auftragsverlauf für den Auftrag gelöscht.
  • Wenn @delete_history ist 0, wird der Auftragsverlauf nicht gelöscht.

Wenn ein Auftrag gelöscht wird und der Verlauf nicht gelöscht wird, werden verlaufsbasierte Informationen für den Auftrag nicht im SQL Server-Agent grafischen Benutzeroberflächenauftragsverlauf angezeigt, die Informationen befinden sich jedoch weiterhin in der sysjobhistory Tabelle in der msdb Datenbank.

[ @delete_unused_schedule = ] delete_unused_schedule

Gibt an, ob die an diesen Auftrag angefügten Zeitpläne gelöscht werden sollen, wenn sie keinem anderen Auftrag zugeordnet sind. @delete_unused_schedule ist bit, mit einem Standardwert von 1.

  • Wenn @delete_unused_schedule ist 1, werden an diesen Auftrag angefügte Zeitpläne gelöscht, wenn keine anderen Aufträge auf den Zeitplan verweisen.
  • Wenn @delete_unused_schedule ist 0, werden die Zeitpläne nicht gelöscht.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Keine.

Hinweise

Das argument @originating_server ist für die interne Verwendung reserviert.

Das argument @delete_unused_schedule bietet Abwärtskompatibilität mit früheren Versionen von SQL Server, indem Zeitpläne, die keinem Auftrag zugeordnet sind, automatisch entfernt werden. Dieser Parameter ist standardmäßig auf das abwärtskompatible Verhalten festgelegt. Um Zeitpläne beizubehalten, die nicht an einen Auftrag angefügt sind, müssen Sie den Wert 0 als argument @delete_unused_schedule angeben.

SQL Server Management Studio bietet eine einfache grafische Möglichkeit zum Verwalten von Aufträgen. Es handelt sich hierbei um die empfohlene Art und Weise zum Erstellen und Verwalten der Auftragsinfrastruktur.

Diese gespeicherte Prozedur kann Wartungspläne nicht löschen und keine Aufträge löschen, die Teil von Wartungsplänen sind. Verwenden Sie stattdessen SQL Server Management Studio, um Wartungspläne zu löschen.

Diese gespeicherte Prozedur teilt den Namen sp_delete_job 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_delete_job (Azure Elastic Jobs).

Berechtigungen

Sie können Berechtigungen für dieses Verfahren erteilen EXECUTE , aber diese Berechtigungen können während eines SQL Server-Upgrades außer Kraft gesetzt werden.

Anderen Benutzern muss eine der folgenden SQL Server-Agent festen Datenbankrollen in der msdb Datenbank gewährt werden:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Weitere Informationen zu den Berechtigungen dieser Rollen finden Sie unter Feste Datenbankrollen des SQL Server-Agents.

Mitglieder der festen Serverrolle "sysadmin " können ausgeführt werden sp_delete_job , um einen beliebigen Auftrag zu löschen. Ein Benutzer, der kein Mitglied der festen Serverrolle "sysadmin" ist, kann nur Aufträge löschen, die diesem Benutzer gehören.

Beispiele

Im folgenden Beispiel wird der Auftrag NightlyBackups gelöscht.

USE msdb;
GO

EXEC sp_delete_job
    @job_name = N'NightlyBackups';
GO