sp_add_schedule (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Crea una pianificazione che può essere utilizzata da un numero qualsiasi di processi.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_add_schedule
[ @schedule_name = ] 'schedule_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' ]
[ , [ @schedule_uid = ] schedule_uid OUTPUT ]
[ , [ @schedule_id = ] schedule_id OUTPUT ]
[ , [ @originating_server = ] server_name ] /* internal */
[ ; ]
Argomenti
[ @schedule_name = ] 'schedule_name'
Nome della pianificazione. @schedule_name è sysname, senza impostazione predefinita.
[ @enabled = ] abilitato
Indica lo stato corrente della pianificazione. @enabled è tinyint, con il valore predefinito 1
(abilitato). Se 0
, la pianificazione non è abilitata. Quando la pianificazione non è abilitata, nessun processo viene eseguito in questa pianificazione.
[ @freq_type = ] freq_type
Valore che indica la frequenza di esecuzione di un processo @freq_type è int, con un valore predefinito , 0
e può essere uno di questi valori.
valore | Descrizione |
---|---|
1 |
Una sola volta |
4 |
Ogni giorno |
8 |
Settimanale |
16 |
Mensile |
32 |
Mensile, relativo a @freq_interval |
64 |
Eseguire all'avvio del servizio SQL Server Agent |
128 |
Eseguire quando il computer è inattiva (non supportato in Istanza gestita di SQL di Azure) |
[ @freq_interval = ] @freq_interval
Giorni in cui un processo viene eseguito. @freq_interval è int, con un valore predefinito , 1
e dipende dal valore di @freq_type.
Valore di @freq_type | Effetto sulle @freq_interval |
---|---|
1 (una volta) |
@freq_interval non è usato. |
4 (giornaliero) |
Ogni @freq_interval giorni. |
8 (settimanale) |
@freq_interval è uno o più dei seguenti (combinati con un OR operatore logico):1 = Domenica2 = Lunedì4 = Martedì8 = Mercoledì16 = Giovedì32 = Venerdì64 = Sabato |
16 (mensile) |
Nel @freq_interval giorno del mese. |
32 (relativo mensile) |
@freq_interval è uno dei seguenti:1 = Domenica2 = Lunedì3 = Martedì4 = Mercoledì5 = Giovedì6 = Venerdì7 = Sabato8 = Giorno9 = Giorno feriale10 = Giorno del fine settimana |
64 (all'avvio del servizio SQLServerAgent) |
@freq_interval non è usato. |
128 |
@freq_interval non è usato. |
[ @freq_subday_type = ] freq_subday_type
Specifica le unità per @freq_subday_interval. @freq_subday_type è int, con un valore predefinito , 0
e può essere uno di questi valori.
Valore | Descrizione (unità) |
---|---|
0x1 |
All'ora specificata |
0x2 |
Secondi |
0x4 |
Minuti |
0x8 |
Ore |
[ @freq_subday_interval = ] freq_subday_interval
Numero di periodi di @freq_subday_type da eseguire tra ogni esecuzione di un processo. @freq_subday_interval è int, con il valore predefinito 0
. L'intervallo deve essere lungo almeno 10 secondi. @freq_subday_interval viene ignorato nei casi in cui @freq_subday_type è uguale a 1
.
[ @freq_relative_interval = ] freq_relative_interval
Occorrenza di un processo di @freq_interval in ogni mese, se @freq_interval è 32 (relativo mensile). @freq_relative_interval è int, con un valore predefinito , 0
e può essere uno di questi valori. @freq_relative_interval viene ignorato nei casi in cui @freq_type non è uguale a 32.
Valore | Descrizione (unità) |
---|---|
1 |
First |
2 |
Secondo |
4 |
Terza |
8 |
Quarta |
16 |
Ultimo |
[ @freq_recurrence_factor = ] freq_recurrence_factor
Numero di settimane o mesi tra le esecuzioni pianificate di un processo. @freq_recurrence_factor viene usato solo se @freq_type è 8
, 16
o 32
. @freq_recurrence_factor è int, con un valore predefinito .0
[ @active_start_date = ] active_start_date
Data dalla quale è possibile avviare l'esecuzione del processo. @active_start_date è int, con un valore predefinito , che indica la data odiernaNULL
. La data è formattata come yyyyMMdd
. Se @active_start_date non NULL
è , la data deve essere maggiore o uguale a 19900101.
Dopo aver creato la pianificazione, esaminare la data di inizio e verificare che sia la data corretta. Per altre informazioni, vedere la sezione "Pianificazione della data di inizio" in Creare e allegare pianificazioni ai processi.
Per le pianificazioni settimanali o mensili, l'agente ignora se @active_start_date è passato e usa invece la data corrente. Quando viene creata una pianificazione di SQL Server Agent usando sp_add_schedule
è disponibile un'opzione per specificare il parametro @active_start_date che corrisponde alla data di inizio dell'esecuzione del processo. Se il tipo di pianificazione è settimanale o mensile e il parametro @active_start_date è impostato su una data precedente, il parametro @active_start_date viene ignorato e la data corrente viene usata per @active_start_date.
[ @active_end_date = ] active_end_date
Data dalla quale è possibile arrestare l'esecuzione del processo. @active_end_date è int, con un valore predefinito 99991231
, che indica il 31 dicembre 9999. Formattato come yyyyMMdd
.
[ @active_start_time = ] active_start_time
Ora in qualsiasi giorno tra @active_start_date e @active_end_date per iniziare l'esecuzione di un processo. @active_start_time è int, con un valore predefinito 000000
, che indica le 12:00:00 in un orologio di 24 ore e deve essere immesso usando il formato HHmmss
.
[ @active_end_time = ] active_end_time
Ora in qualsiasi giorno tra @active_start_date e @active_end_date per terminare l'esecuzione di un processo. @active_end_time è int, con un valore predefinito 235959
, che indica le 11:59:59.59 su un orologio di 24 ore e deve essere immesso usando il formato HHmmss
.
[ @owner_login_name = ] 'owner_login_name'
Nome dell'entità server proprietaria della pianificazione. @owner_login_name è sysname, con un valore predefinito NULL
, che indica che la pianificazione è di proprietà dell'autore.
[ @schedule_uid = ] schedule_uid OUTPUT
Identificatore univoco della pianificazione. @schedule_uid è una variabile di tipo uniqueidentifier.
[ @schedule_id = ] schedule_id OUTPUT
Identificatore della pianificazione. @schedule_id è una variabile di tipo int.
[ @originating_server = ] server_name
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Set di risultati
Nessuno.
Osservazioni:
SQL Server Management Studio include un semplice strumento grafico per la gestione dei processi ed è lo strumento consigliato per la creazione e gestione dell'infrastruttura dei processi.
Autorizzazioni
È possibile concedere EXECUTE
autorizzazioni per questa procedura, ma queste autorizzazioni potrebbero essere sottoposte a override durante un aggiornamento di SQL Server.
È necessario concedere ad altri utenti uno dei ruoli predefiniti del database di SQL Server Agent seguenti:msdb
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
Per informazioni dettagliate sulle autorizzazioni di questi ruoli, vedere Ruoli di database predefiniti di SQL Server Agent.
Esempi
R. Creare una programmazione
Nell'esempio seguente viene creata una pianificazione denominata RunOnce
. La pianificazione viene eseguita una volta, alle 23:30
del giorno in cui è stata creata.
USE msdb;
GO
EXEC dbo.sp_add_schedule
@schedule_name = N'RunOnce',
@freq_type = 1,
@active_start_time = 233000;
GO
B. Creare una pianificazione, collegando la pianificazione a più processi
Nell'esempio seguente viene creata una pianificazione denominata NightlyJobs
. I processi che utilizzano questa pianificazione vengono eseguiti ogni giorno quando l'ora indicata dal server è 01:00
. Nell'esempio la pianificazione viene collegata al processo BackupDatabase
e al processo RunReports
.
Nota
In questo esempio si presuppone che il processo BackupDatabase
e il processo RunReports
esistano già.
USE msdb;
GO
EXEC sp_add_schedule
@schedule_name = N'NightlyJobs',
@freq_type = 4,
@freq_interval = 1,
@active_start_time = 010000;
GO
EXEC sp_attach_schedule
@job_name = N'BackupDatabase',
@schedule_name = N'NightlyJobs';
GO
EXEC sp_attach_schedule
@job_name = N'RunReports',
@schedule_name = N'NightlyJobs';
GO
Contenuto correlato
- Creare pianificazioni e collegarle ai processi
- Pianificare un processo
- Create a Schedule
- Stored procedure di SQL Server Agent (Transact-SQL)
- sp_add_jobschedule (Transact-SQL)
- sp_update_schedule (Transact-SQL)
- sp_delete_schedule (Transact-SQL)
- sp_help_schedule (Transact-SQL)
- sp_attach_schedule (Transact-SQL)