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.