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.