sp_add_schedule (Transact-SQL)

Gilt für:SQL ServerAzure 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 0der 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 1von , 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 = Sonntag
2 = Montag
4 = Dienstag
8 = Mittwoch
16 = Donnerstag
32 = Freitag
64 = Samstag
16 (monatlich) Am @freq_interval Tag des Monats.
32 (monatlich relativ) @freq_interval ist eine der folgenden:

1 = Sonntag
2 = Montag
3 = Dienstag
4 = Mittwoch
5 = Donnerstag
6 = Freitag
7 = Samstag
8 = Tag
9 = Wochentag
10 = 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 Letzte

[ @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, 16oder 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. Wenn @active_start_date nicht NULL ist, 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 HHmmsseingegeben 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 HHmmsseingegeben 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 (Erfolg) 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