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

sp_add_schedule vs. sp_add_jobschedule in SQL Server:Was ist der Unterschied?

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 den sp_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 .