Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

sp_add_schedule vs sp_add_jobschedule in SQL Server:qual è la differenza?

Se stai creando un processo di SQL Server Agent con T-SQL, ti starai chiedendo se creare la relativa pianificazione con sp_add_schedule stored procedure o sp_add_jobschedule procedura.

Ecco una rapida spiegazione della differenza tra queste due procedure.

La differenza

  • Il sp_add_schedule la procedura crea una pianificazione, ma non la allega ad alcun lavoro. Per farlo, devi usare sp_attach_schedule procedura.
  • Il sp_add_jobschedule la procedura crea la pianificazione e la allega a un determinato lavoro, tutto in una volta.

Pertanto, sp_add_jobschedule può essere utilizzato se è necessario creare una nuova pianificazione per un lavoro specifico e quel lavoro esiste già. Se stai creando una pianificazione per più lavori e nessuno di essi esiste ancora, puoi utilizzare sp_add_schedule . Quindi puoi usare sp_attach_schedule per allegarlo ai tuoi lavori in un secondo momento.

Ma questo non vuol dire che non puoi usare sp_add_schedule invece di sp_add_jobschedule se il lavoro esiste già.

Usando sp_add_schedule (in combinazione con sp_attach_schedule ) consente di separare il processo di creazione delle pianificazioni e di allegarle ai lavori. Puoi comunque utilizzare questa combinazione anche quando crei un singolo lavoro con un'unica pianificazione.

In altre parole, puoi usare sp_add_schedule invece di sp_add_jobschedule per tutti i processi di SQL Server Agent.

Esempio

Il sp_add_jobschedule Procedura

Il sp_add_jobschedule procedura crea una pianificazione per un determinato processo di SQL Server Agent. Quando chiami questa procedura, devi fornire il nome o l'ID di un lavoro a cui desideri candidarti.

Fondamentalmente, questa procedura crea una pianificazione e la allega a un singolo lavoro.

Ecco un esempio di creazione di un lavoro e utilizzo di sp_add_jobschedule procedura memorizzata:

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;

Quando guardi il sp_add_jobschedule procedura, il @job_name argomento fornisce il nome del lavoro. Il @name argomento fornisce il nome che vuoi dare alla pianificazione.

Il sp_add_schedule Procedura

Il sp_add_schedule La procedura consente di creare una pianificazione senza dover specificare un lavoro a cui allegarla.

Questa procedura crea la pianificazione, ma non la allega ad alcun lavoro. Per allegarlo a un lavoro, devi utilizzare sp_attach_schedule procedura.

Ecco un esempio:

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

Quando usi sp_attach_schedule , devi fornire il nome del lavoro o il suo ID (ma non entrambi), nonché il nome o l'ID della pianificazione (ma non entrambi).

Allegare un sp_add_jobschedule Programma

È importante notare che sp_attach_schedule può allegare pianificazioni che sono state create con entrambi sp_add_schedule e con sp_add_jobschedule .

In altre parole, creare una pianificazione con sp_add_jobschedule non lo limita solo al lavoro specificato durante la creazione della pianificazione. è ancora disponibile per essere allegato ad altri lavori in seguito utilizzando sp_attach_schedule .