Wenn Sie dabei sind, einen SQL Server-Agent-Job mit T-SQL zu erstellen, fragen Sie sich vielleicht, ob Sie seinen Zeitplan mit sp_add_schedule
erstellen sollen gespeicherte Prozedur oder sp_add_jobschedule
Verfahren.
Hier ist eine kurze Erklärung des Unterschieds zwischen diesen beiden Verfahren.
Der Unterschied
- Der
sp_add_schedule
Die Prozedur erstellt einen Zeitplan, fügt ihn aber keinen Jobs hinzu. Dazu müssen Sie densp_attach_schedule
verwenden Verfahren. - Der
sp_add_jobschedule
Die Prozedur erstellt den Zeitplan und hängt ihn an einen bestimmten Job an, alles in einem Rutsch.
Daher sp_add_jobschedule
kann verwendet werden, wenn Sie einen neuen Zeitplan für einen bestimmten Job erstellen müssen und dieser Job bereits vorhanden ist. Wenn Sie einen Zeitplan für mehrere Jobs erstellen und noch keiner davon existiert, können Sie sp_add_schedule
verwenden . Dann können Sie sp_attach_schedule
verwenden um es später an Ihre Jobs anzuhängen.
Aber das heißt nicht, dass Sie sp_add_schedule
nicht verwenden können statt sp_add_jobschedule
wenn der Job bereits existiert.
Verwenden von sp_add_schedule
(in Verbindung mit sp_attach_schedule
) ermöglicht es Ihnen, den Prozess des Erstellens von Zeitplänen und des Anhängens an Jobs zu trennen. Sie können diese Kombination auch dann verwenden, wenn Sie einen einzelnen Job mit einem einzelnen Zeitplan erstellen.
Mit anderen Worten, Sie können sp_add_schedule
verwenden statt sp_add_jobschedule
für alle Ihre SQL Server Agent-Jobs.
Beispiel
Der sp_add_jobschedule
Verfahren
Der sp_add_jobschedule
Die Prozedur erstellt einen Zeitplan für einen bestimmten SQL Server-Agent-Auftrag. Wenn Sie diese Prozedur aufrufen, müssen Sie den Namen oder die ID eines Jobs angeben, auf den sie angewendet werden soll.
Grundsätzlich erstellt dieses Verfahren einen Zeitplan und hängt ihn an einen einzelnen Job an.
Hier ist ein Beispiel für das Erstellen eines Jobs und die Verwendung von sp_add_jobschedule
gespeicherte Prozedur:
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;
Wenn Sie sich den sp_add_jobschedule
ansehen Prozedur, der @job_name
Das Argument stellt den Jobnamen bereit. Der @name
Das Argument gibt den Namen an, den Sie dem Zeitplan geben möchten.
Der sp_add_schedule
Verfahren
Der sp_add_schedule
Mit dem Verfahren können Sie einen Zeitplan erstellen, ohne einen Job angeben zu müssen, an den er angehängt werden soll.
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.
Hier ist ein Beispiel:
EXEC sp_add_schedule
@schedule_name = N'RunDailyAM',
@freq_type = 4,
@freq_interval = 4,
@active_start_time = 041000;
GO
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.
Anhängen eines sp_add_jobschedule
Zeitplan
Es ist wichtig zu beachten, dass sp_attach_schedule
kann Zeitpläne anhängen, die sowohl mit sp_add_schedule
erstellt wurden und mit sp_add_jobschedule
.
Mit anderen Worten, Erstellen eines Zeitplans mit sp_add_jobschedule
beschränkt ihn nicht nur auf den Job, den Sie beim Erstellen des Zeitplans angegeben haben. es ist immer noch verfügbar, um später mit sp_attach_schedule
an andere Jobs angehängt zu werden .