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

Creare una pianificazione di SQL Server Agent con T-SQL

Quando si utilizza T-SQL, è possibile utilizzare sp_add_schedule stored procedure per aggiungere una pianificazione di SQL Server Agent.

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

Puoi anche usare sp_add_jobschedule per creare il palinsesto e allegarlo tutto con la stessa procedura.

Esempio di sp_add_schedule Procedura

Ecco un esempio che utilizza sp_add_schedule per creare una nuova pianificazione:

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

Questa procedura memorizzata accetta più argomenti di quelli inclusi in questo esempio, ma questi sono alcuni dei più comuni. Vedere le tabelle seguenti per uno schema dei valori accettati.

@schedule_name è un argomento obbligatorio, ma gli altri sono facoltativi e hanno impostazioni predefinite nel caso non le fornissi.

Ora possiamo usare sp_attach_schedule per allegare tale pianificazione a un lavoro esistente:


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).

Esempio di sp_add_jobschedule Procedura

Ecco un esempio che utilizza sp_add_jobschedule per creare una nuova pianificazione e allegarla a un lavoro, tutto in una volta:

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;

Con questa procedura il @job_name argomento fornisce il nome del lavoro e il @name argomento fornisce il nome che vuoi dare alla pianificazione.

Valori dei parametri

Il modo in cui i dati di pianificazione vengono archiviati in msdb database rende un po' complicato quando si tratta di pianificare i lavori con T-SQL.

I valori di data/ora vengono memorizzati come int tipi. Il tipo di frequenza è espresso come int , così come i valori dell'intervallo e varie altre opzioni.

Di seguito è riportata una panoramica dei valori accettati per i parametri forniti negli esempi precedenti.

@freq_type

Questo argomento specifica quando deve essere eseguito un lavoro. Accetta i seguenti valori:

Valore Descrizione
1 Una volta
4 Quotidiano
8 Settimanale
16 Mensile
32 Mensile, relativo a freq_interval
64 Esegui all'avvio del servizio SQL Agent
128 Esegui quando il computer è inattivo

@freq_interval

Questo argomento specifica i giorni in cui viene eseguito un lavoro.

Questo argomento dipende dal valore di @freq_type argomento, come indicato nella tabella seguente:

Valore di freq_type Effetto su freq_interval
1 (una volta) freq_interval è inutilizzato.
4 (giornaliero) Ogni freq_interval giorni.
8 (settimanale) freq_interval è uno o più dei seguenti (combinato con un OR operatore logico):

1 (Domenica)

2 (Lunedi)

4 (Martedì)

8 (Mercoledì)

16 (Giovedì)

32 (Venerdì)

64 (sabato)
16 (mensile) Sul freq_interval giorno del mese.
32 (parente mensile) freq_interval è uno dei seguenti:

1 (Domenica)

2 (Lunedi)

3 (Martedì)

4 (Mercoledì)

5 (Giovedì)

6 (Venerdì)

7 (Sabato)

8 (Giorno)

9 (giorno feriale)

10 (giorno del fine settimana)
64 (all'avvio del servizio SQLServerAgent) freq_interval è inutilizzato.
128 freq_interval è inutilizzato.

@freq_recurrence_factor

Specifica il numero di settimane o mesi tra l'esecuzione pianificata di un lavoro.

Questo è int , con un valore predefinito di 0 , e viene utilizzato solo se freq_type è 8 , 16 o 32 .

@active_start_time

Specifica l'ora in qualsiasi giorno compreso tra il @active_start_date e il @active_end_date argomenti per iniziare l'esecuzione di un lavoro. @active_start_time è int , con un valore predefinito di 000000 , che indica le 00:00:00 in formato 24 ore, e deve essere inserito utilizzando il modulo HHMMSS.

@active_start_date

Sebbene non sia incluso nei miei esempi sopra, il @active_start_date argomento consente di specificare la data in cui può iniziare l'esecuzione di un lavoro. Questo è int , con un valore predefinito NULL, che indica la data odierna. La data è formattata come AAAAMMGG.

@active_end_date

Puoi anche fornire un @active_end_date argomento, che specifica la data in cui l'esecuzione di un lavoro può interrompersi.

@active_end_date è int , con un valore predefinito di 99991231 , che indica il 31 dicembre 9999. La data è formattata come AAAAMMGG.

Maggiori informazioni

Consulta la documentazione di Microsoft per sp_add_schedule e/o la documentazione di Microsoft per sp_add_jobschedule per maggiori dettagli sui vari argomenti e sui loro valori accettati.