sp_attach_schedule (Transact-SQL)

Gilt für:SQL Server

Legt einen Zeitplan für einen Auftrag fest.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @job_id = ] 'job_id'

Die Auftragsidentifikationsnummer des Auftrags, dem der Zeitplan hinzugefügt wird. @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.

[ @job_name = ] N'job_name'

Der Name des Auftrags, dem der Zeitplan hinzugefügt wird. @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.

[ @schedule_id = ] schedule_id

Die Zeitplan-ID des für den Auftrag festgelegten 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 für den Auftrag festzulegenden Zeitplans. @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.

[ @automatic_post = ] automatic_post

@automatic_post ist bit, mit einem Standardwert von 1.

Hinweise

Der Zeitplan und der Auftrag müssen denselben Besitzer aufweisen.

Ein Zeitplan kann für mehrere Aufträge festgelegt werden. Ein Auftrag kann auf der Basis mehrerer Zeitpläne ausgeführt werden.

Diese gespeicherte Prozedur muss aus der msdb Datenbank ausgeführt werden.

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.

SQL Server überprüft, ob der Benutzer sowohl den Auftrag als auch den Zeitplan besitzt.

Beispiele

Im folgenden Beispiel wird ein Zeitplan mit dem Namen NightlyJobs erstellt. Aufträge, die diesen Zeitplan verwenden, werden jeden Tag zur Serveruhrzeit 01:00 Uhr ausgeführt. Im Beispiel wird der Zeitplan den Aufträgen BackupDatabase und RunReports angefügt.

Hinweis

Bei diesem Beispiel wird davon ausgegangen, dass die Aufträge BackupDatabase und RunReports bereits vorhanden sind.

USE msdb;
GO

EXEC sp_add_schedule
    @schedule_name = N'NightlyJobs' ,
    @freq_type = 4,
    @freq_interval = 1,
    @active_start_time = 010000 ;
GO

EXEC sp_attach_schedule
   @job_name = N'BackupDatabase',
   @schedule_name = N'NightlyJobs' ;
GO

EXEC sp_attach_schedule
   @job_name = N'RunReports',
   @schedule_name = N'NightlyJobs' ;
GO