sp_add_jobschedule (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Erstellt einen Zeitplan für einen SQL Server-Agent Auftrag.

Transact-SQL-Syntaxkonventionen

Wichtig

In Azure SQL Managed Instance werden derzeit die meisten, aber nicht alle, SQL Server-Agent-Features unterstützt. Details dazu finden Sie unter T-SQL-Unterschiede zwischen Azure SQL Managed Instance und SQL Server.

Syntax

sp_add_jobschedule
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    , [ @name = ] N'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 ]
    [ , [ @schedule_id = ] schedule_id OUTPUT ]
    [ , [ @automatic_post = ] automatic_post ]
    [ , [ @schedule_uid = ] 'schedule_uid' OUTPUT ]
[ ; ]

Argumente

[ @job_id = ] 'job_id'

Die ID 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.

[ @name = ] N'name'

Name des Zeitplans. @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 deaktiviert ist, wird der Auftrag nicht ausgeführt.

[ @freq_type = ] freq_type

Ein Wert, der angibt, wann der Auftrag ausgeführt werden soll. @freq_type ist int und kann einer der folgenden Werte sein:

Wert Beschreibung
1 Einmal
4 Täglich
8 Wöchentlich
16 Monatlich
32 Monatlich relativ zu @freq_interval.
64 Wird ausgeführt, wenn der SQL Server-Agent Dienst gestartet wird.
128 Ausführen, wenn sich der Computer im Leerlauf befindet.

[ @freq_interval = ] freq_interval

Der Tag, an dem der Auftrag ausgeführt wird. @freq_interval ist "int" mit einem Standardwert von 0" und hängt vom Wert @freq_type ab, wie in der folgenden Tabelle angegeben:

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 SQL Server-Agent 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 und kann eine der folgenden 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 Zeiträume, die zwischen jeder Ausführung des Auftrags auftreten sollen. @freq_subday_interval ist int mit einem Standardwert von 0.

[ @freq_relative_interval = ] freq_relative_interval

Definiert die @freq_interval weiter, wenn @freq_type auf (monatlich relativ) festgelegt 32 ist.

@freq_relative_interval ist int und kann einer der folgenden Werte sein:

Wert Beschreibung (Einheit)
1 First
2 Second
4 Third
8 Viertes
16 Letzte

@freq_relative_interval gibt das Auftreten des Intervalls an. Wenn z. B. @freq_relative_interval auf 2, @freq_type festgelegt ist und @freq_interval auf 3" festgelegt 32ist , würde der geplante Auftrag am zweiten Dienstag jedes Monats auftreten.

[ @freq_recurrence_factor = ] freq_recurrence_factor

Die Anzahl der Wochen oder Monate zwischen den geplanten Ausführungen des Auftrags. @freq_recurrence_factor ist int mit einem Standardwert von 0. @freq_recurrence_factor wird nur verwendet, wenn @freq_type auf 8, 16oder 32.

[ @active_start_date = ] active_start_date

Das Datum, an dem die Auftragsausführung beginnen kann. @active_start_date ist int, mit einem Standardwert von NULL. Das Datum ist als yyyyMMdd. Wenn @active_start_date festgelegt ist, muss das Datum größer oder gleich sein 19900101.

Ü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".

[ @active_end_date = ] active_end_date

Das Datum, an dem die Ausführung des Auftrags beendet werden kann. @active_end_date ist int, mit einem Standardwert von 99991231. Das Datum ist 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 des Auftrags zu beginnen. @active_start_time ist int, mit einem Standardwert von 000000. Die Uhrzeit wird wie HHmmss auf einer 24-Stunden-Uhr formatiert.

[ @active_end_time = ] active_end_time

Die Uhrzeit an einem beliebigen Tag zwischen active_start_date und @active_end_date bis zum Beenden der Auftragsausführung. @active_end_time ist int mit einem Standardwert von 235959. Die Uhrzeit wird wie HHmmss auf einer 24-Stunden-Uhr formatiert.

[ @schedule_id = ] schedule_id OUTPUT

Die dem Zeitplan zugewiesene Planidentifikationsnummer, wenn sie erfolgreich erstellt wurde. @schedule_id ist ein OUTPUT-Parameter vom Typ int.

[ @automatic_post = ] automatic_post

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

[ @schedule_uid = ] 'schedule_uid' OUTPUT

Ein eindeutiger Bezeichner für den Zeitplan. @schedule_uid ist ein OUTPUT-Parameter vom Typ uniqueidentifier.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Resultset

Keine.

Hinweise

Auftragszeitpläne können jetzt unabhängig von Aufträgen verwaltet werden. Verwenden Sie sp_add_schedule zum Hinzufügen eines Zeitplans zu einem Auftrag den Zeitplan und sp_attach_schedule zum Anfügen des Zeitplans an einen Auftrag.

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

Im folgenden Beispiel wird ein Auftragsplan zugewiesen SaturdayReports, der jeden Samstag um 2:00 Uhr ausgeführt wird.

EXEC msdb.dbo.sp_add_jobschedule
    @job_name = N'SaturdayReports', -- Job name
    @name = N'Weekly_Sat_2AM', -- Schedule name
    @freq_type = 8, -- Weekly
    @freq_interval = 64, -- Saturday
    @freq_recurrence_factor = 1, -- every week
    @active_start_time = 20000 -- 2:00 AM