Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Erstellen Sie mit T-SQL einen Zeitplan für den SQL Server-Agent

Wenn Sie T-SQL verwenden, können Sie sp_add_schedule verwenden gespeicherte Prozedur zum Hinzufügen eines Zeitplans für den SQL Server-Agent.

Dieses Verfahren erstellt den Zeitplan, fügt ihn aber keinen Jobs hinzu. Um es an einen Job anzuhängen, müssen Sie den sp_attach_schedule verwenden Verfahren.

Sie können auch sp_add_jobschedule verwenden um den Zeitplan zu erstellen und alles mit dem gleichen Verfahren anzuhängen.

Beispiel für sp_add_schedule Verfahren

Hier ist ein Beispiel, das sp_add_schedule verwendet So erstellen Sie einen neuen Zeitplan:

EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO

Diese gespeicherte Prozedur akzeptiert mehr Argumente, als ich in dieses Beispiel aufgenommen habe, aber dies sind einige der gebräuchlicheren. In den Tabellen unten finden Sie eine Übersicht über die akzeptierten Werte.

@schedule_name ist ein erforderliches Argument, aber die anderen sind optional und haben Standardeinstellungen, falls Sie sie nicht angeben.

Wir können jetzt sp_attach_schedule verwenden So hängen Sie diesen Zeitplan an einen vorhandenen Job an:


EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO

Wenn Sie sp_attach_schedule verwenden müssen Sie den Namen des Jobs oder seine ID (aber nicht beides) sowie den Plannamen oder die ID (aber nicht beides) angeben.

Beispiel für sp_add_jobschedule Verfahren

Hier ist ein Beispiel, das sp_add_jobschedule verwendet So erstellen Sie einen neuen Zeitplan und hängen ihn an einen Job an, alles auf einmal:

EXEC sp_add_jobschedule 
    @job_name = N'BackupMusicDB',
    @name = N'Weekly_Sun_3AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 30000;

Bei diesem Verfahren wird der @job_name Das Argument stellt den Jobnamen und den @name bereit Das Argument gibt den Namen an, den Sie dem Zeitplan geben möchten.

Parameterwerte

Die Art und Weise, wie Zeitplandaten in der msdb gespeichert werden Datenbank macht es ein bisschen schwierig, wenn es darum geht, Jobs mit T-SQL zu planen.

Datums-/Uhrzeitwerte werden als int gespeichert Typen. Der Häufigkeitstyp wird als int ausgedrückt , ebenso wie die Intervallwerte und verschiedene andere Optionen.

Nachfolgend finden Sie eine Übersicht der akzeptierten Werte für die in den obigen Beispielen angegebenen Parameter.

@freq_type

Dieses Argument gibt an, wann ein Job ausgeführt werden soll. Es akzeptiert die folgenden Werte:

Wert Beschreibung
1 Einmal
4 Täglich
8 Wöchentlich
16 Monatlich
32 Monatlich, relativ zu freq_interval
64 Ausführen, wenn der SQL Agent-Dienst gestartet wird
128 Ausführen, wenn der Computer im Leerlauf ist

@freq_interval

Dieses Argument gibt die Tage an, an denen ein Job ausgeführt wird.

Dieses Argument hängt vom Wert von @freq_type ab Argument, wie in der folgenden Tabelle beschrieben:

Wert von freq_type Wirkung auf freq_interval
1 (einmal) freq_interval ist unbenutzt.
4 (täglich) Jedes freq_interval Tage.
8 (wöchentlich) freq_interval ist eines oder mehrere der Folgenden (kombiniert mit einem OR logischer Operator):

1 (Sonntag)

2 (Montag)

4 (Dienstag)

8 (Mittwoch)

16 (Donnerstag)

32 (Freitag)

64 (Samstag)
16 (monatlich) Auf dem 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 (beim Start des SQLServerAgent-Dienstes) freq_interval ist unbenutzt.
128 freq_interval ist unbenutzt.

@freq_recurrence_factor

Dies gibt die Anzahl der Wochen oder Monate zwischen der geplanten Ausführung eines Jobs an.

Dies ist int , mit einem Standardwert von 0 , und wird nur verwendet, wenn freq_type ist 8 , 16 , oder 32 .

@active_start_time

Gibt die Zeit an einem beliebigen Tag zwischen dem @active_start_date an und das @active_end_date Argumente, um mit der Ausführung eines Jobs zu beginnen. @active_start_time ist int , mit einem Standardwert von 000000 , was 12:00:00 Uhr anzeigt. im 24-Stunden-Format und muss im Formular HHMMSS.

eingegeben werden

@active_start_date

Obwohl in meinen obigen Beispielen nicht enthalten, ist @active_start_date Mit dem Argument können Sie das Datum angeben, an dem die Ausführung eines Jobs beginnen kann. Dies ist int , mit einem Standardwert von NULL, der das heutige Datum angibt. Das Datum hat das Format JJJJMMTT.

@active_end_date

Sie können auch ein @active_end_date angeben -Argument, das das Datum angibt, an dem die Ausführung eines Jobs beendet werden kann.

@active_end_date ist int , mit einem Standardwert von 99991231 , was den 31. Dezember 9999 angibt. Das Datum hat das Format JJJJMMTT.

Weitere Informationen

Siehe die Microsoft-Dokumentation für sp_add_schedule und/oder die Microsoft-Dokumentation für sp_add_jobschedule für weitere Einzelheiten zu den verschiedenen Argumenten und ihren akzeptierten Werten.