Condividi tramite


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 , 0e 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 , 1e 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 = Domenica
2 = 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 = Domenica
2 = Lunedì
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 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 , 0e 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 , 0e 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, 16o 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