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
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
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