sp_detach_schedule (Transact-SQL)

Gilt für:SQL Server

Entfernt eine Zuordnung zwischen einem Zeitplan und einem Auftrag.

Transact-SQL-Syntaxkonventionen

Syntax

sp_detach_schedule
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @schedule_id = ] schedule_id ]
    [ , [ @schedule_name = ] N'schedule_name' ]
    [ , [ @delete_unused_schedule = ] delete_unused_schedule ]
    [ , [ @automatic_post = ] automatic_post ]
[ ; ]

Argumente

[ @job_id = ] 'job_id'

Die ID des Auftrags, aus dem der Zeitplan entfernt werden soll. @job_id ist eindeutiger Bezeichner mit einem Standardwert von NULL.

[ @job_name = ] N'job_name'

Der Name des Auftrags, aus dem der Zeitplan entfernt werden soll. @job_name ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

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

[ @schedule_id = ] schedule_id

Die ID des Zeitplans, der aus dem Auftrag entfernt werden soll. @schedule_id ist int mit einem Standardwert von NULL.

[ @schedule_name = ] N'schedule_name'

Der Name des Zeitplans, der aus dem Auftrag entfernt werden soll. @schedule_name ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

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

[ @delete_unused_schedule = ] delete_unused_schedule

Gibt an, ob nicht verwendete Auftragszeitpläne gelöscht werden sollen. @delete_unused_schedule ist bit, mit einem Standardwert von 0.

  • Wenn diese Einstellung festgelegt 0ist, werden alle Zeitpläne beibehalten, auch wenn keine Aufträge darauf verweisen.
  • Bei Festlegung auf 1, werden nicht verwendete Auftragspläne gelöscht, wenn keine Aufträge darauf verweisen.

[ @automatic_post = ] automatic_post

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

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Resultset

Keine

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

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

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.

Nur Mitglieder von sysadmin können diese gespeicherte Prozedur verwenden, um die Attribute von Aufträgen zu bearbeiten, die anderen Benutzern gehören.

SQL Server überprüft, ob der Benutzer den Zeitplan besitzt. Nur Mitglieder der festen Serverrolle "sysadmin " können Zeitpläne von Aufträgen trennen, die einem anderen Benutzer gehören.

Beispiele

Im folgenden Beispiel wird eine Zuordnung zwischen einem NightlyJobs-Zeitplan und einem BackupDatabase-Auftrag entfernt.

USE msdb;
GO

EXEC dbo.sp_detach_schedule
    @job_name = 'BackupDatabase',
    @schedule_name = 'NightlyJobs';
GO