sp_delete_schedule (Transact-SQL)

Gilt für: SQL Server

Löscht einen Zeitplan.

Transact-SQL-Syntaxkonventionen

Syntax

sp_delete_schedule
    [ [ @schedule_id = ] schedule_id ]
    [ , [ @schedule_name = ] N'schedule_name' ]
    [ , [ @force_delete = ] force_delete ]
    [ , [ @automatic_post = ] automatic_post ]
[ ; ]

Argumente

[ @schedule_id = ] schedule_id

Die Zeitplan-ID des zu löschenden Zeitplans. @schedule_id ist int mit einem Standardwert von NULL.

Entweder @schedule_id oder @schedule_name müssen angegeben werden, beide können jedoch nicht angegeben werden.

[ @schedule_name = ] N'schedule_name'

Der Name des zu löschenden Zeitplan. @schedule_name ist "sysname" mit der Standardeinstellung "NULL.

Entweder @schedule_id oder @schedule_name müssen angegeben werden, beide können jedoch nicht angegeben werden.

[ @force_delete = ] force_delete

Gibt an, ob die Prozedur einen Fehler verursachen soll, wenn der Zeitplan an einen Auftrag angefügt wird. @force_delete ist bit, mit einem Standardwert von 0.

  • Wenn @force_delete ist 0, schlägt die gespeicherte Prozedur fehl, wenn der Zeitplan an einen Auftrag angefügt ist.
  • Wenn @force_delete ist 1, wird der Zeitplan unabhängig davon gelöscht, ob der Zeitplan an einen Auftrag angefügt ist.

[ @automatic_post = ] automatic_post

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

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Keine.

Hinweise

Standardmäßig kann ein Zeitplan nicht gelöscht werden, wenn der Zeitplan an einen Auftrag angefügt ist. Wenn Sie einen Zeitplan löschen möchten, der einem Auftrag zugeordnet ist, geben Sie einen Wert für 1 @force_delete an. Durch das Löschen eines Zeitplans werden derzeit ausgeführte Aufträge nicht beendet.

Berechtigungen

Diese gespeicherte Prozedur gehört der db_owner Rolle. Sie können berechtigungen für jeden Benutzer erteilen EXECUTE , diese Berechtigungen können jedoch 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

Der Auftragsbesitzer kann einen Auftrag an einen Zeitplan anfügen und einen Auftrag von einem Zeitplan trennen, ohne auch der Zeitplanbesitzer zu sein. Ein Zeitplan kann jedoch nicht gelöscht werden, wenn die Trennung sie ohne Aufträge belassen würde, es sei denn, der Anrufer ist der Planbesitzer.

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

Nur Mitglieder der Sysadmin-Rolle können einen Auftragszeitplan löschen, der einem anderen Benutzer gehört.

Beispiele

A. Löschen eines Zeitplans

Im folgenden Beispiel wird der Zeitplan NightlyJobs gelöscht. Wenn der Zeitplan an einen Auftrag angefügt ist, löscht das Beispiel den Zeitplan nicht.

USE msdb;
GO

EXEC dbo.sp_delete_schedule
    @schedule_name = N'NightlyJobs';
GO

B. Löschen eines an einen Auftrag angefügten Zeitplans

Im folgenden Beispiel wird der Zeitplan RunOnce gelöscht, unabhängig davon, ob der Zeitplan einem Auftrag angefügt ist.

USE msdb;
GO

EXEC dbo.sp_delete_schedule
    @schedule_name = 'RunOnce',
    @force_delete = 1;
GO