sp_add_schedule (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Legt einen Zeitplan an, der von einer beliebigen Anzahl von Aufträgen verwendet werden kann.
Transact-SQL-Syntaxkonventionen
Syntax
sp_add_schedule
[ @schedule_name = ] 'schedule_name'
[ , [ @enabled = ] enabled ]
[ , [ @freq_type = ] freq_type ]
[ , [ @freq_interval = ] freq_interval ]
[ , [ @freq_subday_type = ] freq_subday_type ]
[ , [ @freq_subday_interval = ] freq_subday_interval ]
[ , [ @freq_relative_interval = ] freq_relative_interval ]
[ , [ @freq_recurrence_factor = ] freq_recurrence_factor ]
[ , [ @active_start_date = ] active_start_date ]
[ , [ @active_end_date = ] active_end_date ]
[ , [ @active_start_time = ] active_start_time ]
[ , [ @active_end_time = ] active_end_time ]
[ , [ @owner_login_name = ] 'owner_login_name' ]
[ , [ @schedule_uid = ] schedule_uid OUTPUT ]
[ , [ @schedule_id = ] schedule_id OUTPUT ]
[ , [ @originating_server = ] server_name ] /* internal */
[ ; ]
Argumente
[ @schedule_name = ] 'schedule_name'
Der Name des Zeitplans. @schedule_name ist "sysname" ohne Standard.
[ @enabled = ] aktiviert
Gibt den aktuellen Status des Zeitplans an. @enabled ist winzig, mit einem Standardwert von 1
(aktiviert). Wenn 0
der Zeitplan nicht aktiviert ist. Wenn der Zeitplan nicht aktiviert ist, werden für diesen Zeitplan keine Aufträge ausgeführt.
[ @freq_type = ] freq_type
Ein Wert, der angibt, wann ein Auftrag ausgeführt werden soll. @freq_type ist int, mit einem Standardwert von 0
, und kann einer dieser Werte sein.
Wert | Beschreibung |
---|---|
1 |
Einmal |
4 |
Täglich |
8 |
Wöchentlich |
16 |
Monatlich |
32 |
Monatlich, relativ zu @freq_interval |
64 |
Ausführen, wenn SQL Server-Agent Dienst gestartet wird |
128 |
Ausführen, wenn sich der Computer im Leerlauf befindet (in Azure SQL verwaltete Instanz nicht unterstützt) |
[ @freq_interval = ] @freq_interval
Die Tage, an denen ein Auftrag ausgeführt wird. @freq_interval ist int, mit einem Standardwert 1
von , und hängt vom Wert von @freq_type ab.
Wert von @freq_type | Auswirkung auf @freq_interval |
---|---|
1 (einmal) |
@freq_interval wird nicht verwendet. |
4 (täglich) |
Alle @freq_interval Tage. |
8 (wöchentlich) |
@freq_interval ist eine oder mehrere der folgenden Elemente (kombiniert mit einem OR logischen Operator):1 = Sonntag2 = Montag4 = Dienstag8 = Mittwoch16 = Donnerstag32 = Freitag64 = Samstag |
16 (monatlich) |
Am @freq_interval Tag des Monats. |
32 (monatlich relativ) |
@freq_interval ist eine der folgenden:1 = Sonntag2 = Montag3 = Dienstag4 = Mittwoch5 = Donnerstag6 = Freitag7 = Samstag8 = Tag9 = Wochentag10 = Wochenendtag |
64 (wenn der SQLServerAgent-Dienst gestartet wird) |
@freq_interval wird nicht verwendet. |
128 |
@freq_interval wird nicht verwendet. |
[ @freq_subday_type = ] freq_subday_type
Gibt die Einheiten für @freq_subday_interval an. @freq_subday_type ist int, mit einem Standardwert von 0
, und kann einer dieser Werte sein.
Wert | Beschreibung (Einheit) |
---|---|
0x1 |
Zum angegebenen Zeitpunkt |
0x2 |
Sekunden |
0x4 |
Minuten |
0x8 |
Stunden |
[ @freq_subday_interval = ] freq_subday_interval
Die Anzahl der @freq_subday_type Perioden, die zwischen jeder Ausführung eines Auftrags auftreten sollen. @freq_subday_interval ist int mit einem Standardwert von 0
. Das Intervall muss mindestens 10 Sekunden lang sein. @freq_subday_interval wird in fällen ignoriert, in denen @freq_subday_type gleich ist1
.
[ @freq_relative_interval = ] freq_relative_interval
Das Vorkommen von @freq_interval eines Auftrags in jedem Monat, wenn @freq_interval 32 (monatlich relativ) ist. @freq_relative_interval ist int, mit einem Standardwert von 0
, und kann einer dieser Werte sein. @freq_relative_interval wird in fällen ignoriert, in denen @freq_type nicht gleich 32 ist.
Wert | Beschreibung (Einheit) |
---|---|
1 |
First |
2 |
Second |
4 |
Third |
8 |
Viertes |
16 |
Last |
[ @freq_recurrence_factor = ] freq_recurrence_factor
Die Anzahl der Wochen oder Monate zwischen der geplanten Ausführung eines Auftrags. @freq_recurrence_factor wird nur verwendet, wenn @freq_type ist8
, 16
oder 32
. @freq_recurrence_factor ist int mit einem Standardwert von 0
.
[ @active_start_date = ] active_start_date
Das Datum, an dem die Ausführung eines Auftrags beginnen kann. @active_start_date ist int mit einem Standardwert von NULL
, der das heutige Datum angibt. Das Datum ist als yyyyMMdd
. Ist @active_start_date nicht NULL
, muss das Datum größer oder gleich 19900101 sein.
Überprüfen Sie nach dem Erstellen des Zeitplans das Startdatum, und bestätigen Sie, dass es sich um das richtige Datum handelt. Weitere Informationen finden Sie im Abschnitt "Planung des Anfangstermins" in "Erstellen und Anfügen von Zeitplänen an Aufträge".
Bei wöchentlichen oder monatlichen Zeitplänen ignoriert der Agent, ob @active_start_date in der Vergangenheit ist, und verwendet stattdessen das aktuelle Datum. Wenn ein SQL Server-Agent Zeitplan mithilfe sp_add_schedule
einer Option erstellt wird, gibt es eine Option, den Parameter anzugeben, @active_start_date das Datum ist, an dem die Auftragsausführung beginnt. Wenn der Zeitplantyp wöchentlich oder monatlich ist und der parameter @active_start_date in der Vergangenheit auf ein Datum festgelegt ist, wird der parameter @active_start_date ignoriert, und das aktuelle Datum wird für @active_start_date verwendet.
[ @active_end_date = ] active_end_date
Das Datum, an dem die Ausführung eines Auftrags beendet werden kann. @active_end_date ist int, mit einem Standardwert von 99991231
, der den 31. Dezember 9999 angibt. Formatiert als yyyyMMdd
.
[ @active_start_time = ] active_start_time
Die Uhrzeit an einem beliebigen Tag zwischen @active_start_date und @active_end_date , um mit der Ausführung eines Auftrags zu beginnen. @active_start_time ist int, mit einem Standardwert von 000000
, der 12:00:00 Uhr auf einer 24-Stunden-Uhr angibt und mit dem Formular HHmmss
eingegeben werden muss.
[ @active_end_time = ] active_end_time
Die Uhrzeit an einem beliebigen Tag zwischen @active_start_date und @active_end_date , um die Ausführung eines Auftrags zu beenden. @active_end_time ist int, mit einem Standardwert von 235959
, der 11:59:59:59 P.M. auf einer 24-Stunden-Uhr angibt und mit dem Formular HHmmss
eingegeben werden muss.
[ @owner_login_name = ] 'owner_login_name'
Der Name des Serverprinzipals, der Besitzer des Zeitplans ist. @owner_login_name ist sysname, mit einem Standardwert von NULL
, der angibt, dass der Zeitplan dem Ersteller gehört.
[ @schedule_uid = ] schedule_uid OUTPUT
Ein eindeutiger Bezeichner für den Zeitplan. @schedule_uid ist eine Variable vom Typ uniqueidentifier.
[ @schedule_id = ] schedule_id OUTPUT
Ein Bezeichner für den Zeitplan. @schedule_id ist eine Variable vom Typ "int".
[ @originating_server = ] server_name
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
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.
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.
Beispiele
A. Erstellen eines Zeitplans
Im folgenden Beispiel wird ein Zeitplan mit dem Namen RunOnce
erstellt. Der Zeitplan wird einmal um 23:30
Uhr an dem Tag ausgeführt, an dem der Zeitplan erstellt wird.
USE msdb;
GO
EXEC dbo.sp_add_schedule
@schedule_name = N'RunOnce',
@freq_type = 1,
@active_start_time = 233000;
GO
B. Erstellen eines Zeitplans, Anfügen des Zeitplans an mehrere Aufträge
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
Zugehöriger Inhalt
- Anlegen und Zuweisen von Zeitplänen zu Aufträgen
- Planen eines Auftrags
- Create a Schedule
- SQL Server-Agent gespeicherten Prozeduren (Transact-SQL)
- sp_add_jobschedule (Transact-SQL)
- sp_update_schedule (Transact-SQL)
- sp_delete_schedule (Transact-SQL)
- sp_help_schedule (Transact-SQL)
- sp_attach_schedule (Transact-SQL)