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

Modifica di una pianificazione di SQL Server Agent (T-SQL)

Le pianificazioni di SQL Server Agent possono essere gestite indipendentemente dai processi. Ciò significa che puoi aggiornare la pianificazione direttamente senza aggiornare il lavoro stesso.

Puoi farlo con sp_update_schedule procedura memorizzata.

Esempio

Crea il programma

Per prima cosa, creiamo una pianificazione:

EXEC sp_add_schedule 
    @schedule_name = N'Weekly_Sat_1AM',
    @freq_type = 8,
    @freq_interval = 64,
    @freq_recurrence_factor = 1,
    @active_start_time = 10000;

Ora possiamo usare sp_update_schedule per modificare tale pianificazione.

Aggiorna il programma

Ecco un esempio di aggiornamento della pianificazione che abbiamo appena creato.

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_type = 8,
    @freq_interval = 1,
    @freq_recurrence_factor = 1,
    @active_start_time = 40000;

In questo caso ho cambiato il nome della programmazione, l'intervallo di frequenza e l'ora di inizio.

Nota che sp_update_schedule modifica solo le impostazioni per le quali vengono forniti i valori dei parametri. Se un parametro viene omesso, l'impostazione corrente viene mantenuta.

Pertanto, poiché alcune delle nostre impostazioni sono rimaste le stesse (in particolare, @freq_type e @freq_recurrence_factor ), avremmo potuto omettere del tutto quei parametri.

In questo modo:

EXEC sp_update_schedule 
    @name = N'Weekly_Sat_1AM',
    @new_name = N'Weekly_Sun_4AM',
    @freq_interval = 1,
    @active_start_time = 40000;

Disattiva una pianificazione

Puoi impostare @enabled a 0 per disabilitare una pianificazione.

Esempio:

EXEC sp_update_schedule 
    @name = N'Weekly_Sun_4AM',
    @new_name = N'Weekly_Sun_4AM (DISABLED)',
    @enabled = 0;

In questo esempio ho anche cambiato il nome per rendere evidente che il lavoro è disabilitato.

Controlla il programma

Puoi usare sp_help_schedule per visualizzare le impostazioni correnti di una pianificazione.

Puoi usarlo con o senza parametri. Se utilizzato senza parametri, restituisce tutte le pianificazioni.

EXEC sp_help_schedule;

Se desideri visualizzare i dettagli di un solo programma, puoi fornire il nome o l'ID del programma.

In questo modo:

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM';

Anche se, quando fornisci il nome, dovrai ricordare il cognome che hai assegnato alla pianificazione. Nel nostro caso, se eseguiamo questa procedura dopo l'esempio precedente (quando abbiamo disabilitato la pianificazione), dovremmo farlo:

EXEC sp_help_schedule 
	@schedule_name = 'Weekly_Sun_4AM (DISABLED)';

Tuttavia, l'ID della pianificazione rimane costante, quindi puoi utilizzarlo indipendentemente dal nome della pianificazione.

Esempio:

EXEC sp_help_schedule 
	@schedule_id = 16;

Quando si utilizza l'ID, se lo si desidera, è possibile omettere il nome del parametro.

Esempio:

EXEC sp_help_schedule 16;

Cosa succede ai lavori che utilizzano la pianificazione modificata?

Tutti i lavori che utilizzano la pianificazione utilizzano immediatamente le nuove impostazioni. Tuttavia, la modifica di una pianificazione non interrompe i lavori attualmente in esecuzione.

Sintassi completa

La sintassi completa di sp_update_schedule va così:

sp_update_schedule   
    {   [ @schedule_id = ] schedule_id   
      | [ @name = ] 'schedule_name' }  
    [ , [ @new_name = ] new_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 ]   
    [ , [ @owner_login_name = ] 'owner_login_name' ]  
    [ , [ @automatic_post =] automatic_post ]

Consulta la documentazione di Microsoft per sp_update_schedule per una spiegazione di ciascun parametro, nonché dei valori che ciascuno accetta.