Condividi tramite


sp_add_job (Transact-SQL)

Aggiunge un nuovo processo eseguito dal servizio SQLServerAgent.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

sp_add_job [ @job_name = ] 'job_name'
     [ , [ @enabled = ] enabled ] 
     [ , [ @description = ] 'description' ] 
     [ , [ @start_step_id = ] step_id ] 
     [ , [ @category_name = ] 'category' ] 
     [ , [ @category_id = ] category_id ] 
     [ , [ @owner_login_name = ] 'login' ] 
     [ , [ @notify_level_eventlog = ] eventlog_level ] 
     [ , [ @notify_level_email = ] email_level ] 
     [ , [ @notify_level_netsend = ] netsend_level ] 
     [ , [ @notify_level_page = ] page_level ] 
     [ , [ @notify_email_operator_name = ] 'email_name' ] 
          [ , [ @notify_netsend_operator_name = ] 'netsend_name' ] 
     [ , [ @notify_page_operator_name = ] 'page_name' ] 
     [ , [ @delete_level = ] delete_level ] 
     [ , [ @job_id = ] job_id OUTPUT ] 

Argomenti

  • [ @job_name = ] 'job_name'
    Nome del processo. Il nome deve essere univoco e non può includere il carattere di percentuale (%). job_nameè di tipo nvarchar(128) e non prevede alcun valore predefinito.

  • [ @enabled = ] enabled
    Indica lo stato del processo aggiunto. enabledè di tipo tinyint e il valore predefinito è 1 (abilitato). Se è uguale a 0, il processo non è abilitato e non viene eseguito in base alla pianificazione. È tuttavia possibile eseguirlo in modo manuale.

  • [ @description = ] 'description'
    Descrizione del processo. description è di tipo nvarchar(512) e il valore predefinito è NULL. Se description viene omesso, viene utilizzata la stringa "Nessuna descrizione disponibile".

  • [ @start_step_id = ] step_id
    Numero di identificazione del primo passaggio da eseguire per il processo. step_idè di tipo int e il valore predefinito è 1.

  • [ @category_name = ] 'category'
    Categoria per il processo. categoryè di tipo sysname e il valore predefinito è NULL.

  • [ @category_id = ] category_id
    Meccanismo indipendente dal linguaggio per specificare una categoria di processi. category_idè di tipo int e il valore predefinito è NULL.

  • [ @owner_login_name = ] 'login'
    Nome dell'account di accesso proprietario del processo. loginè di tipo sysname e il valore predefinito è NULL, interpretato come nome dell'account di accesso corrente. Solo i membri del ruolo predefinito del server sysadmin possono impostare o modificare il valore di @owner_login_name. Se il valore di @owner_login_name viene impostato o modificato da utenti non membri del ruolo sysadmin, l'esecuzione della stored procedure ha esito negativo e viene restituito un errore.

  • [ @notify_level_eventlog = ] eventlog_level
    Valore che indica quando inserire una voce per il processo nel registro applicazioni di Microsoft Windows. eventlog_levelè di tipo int. I possibili valori sono i seguenti.

    Valore

    Descrizione

    0

    Never

    1

    In caso di esito positivo

    2 (predefinito)

    In caso di esito negativo

    3

    Always

  • [ @notify_level_email = ] email_level
    Valore che indica quando inviare un messaggio di posta elettronica al termine del processo. email_levelè di tipo int e il valore predefinito è 0, che indica mai. email_levelconsente di utilizzare gli stessi valori di eventlog_level.

  • [ @notify_level_netsend = ] netsend_level
    Valore che indica quando inviare un messaggio di rete al termine del processo. netsend_levelè di tipo int e il valore predefinito è 0, che indica mai. netsend_level consente di utilizzare gli stessi valori di eventlog_level.

  • [ @notify_level_page = ] page_level
    Valore che indica quando inviare una pagina al termine del processo. page_levelè di tipo int e il valore predefinito è 0, che indica mai. page_levelconsente di utilizzare gli stessi valori di eventlog_level.

  • [ @notify_email_operator_name = ] 'email_name'
    Nome di posta elettronica della persona a cui inviare il messaggio di posta elettronica quando viene raggiunto il livello specificato in email_level. email_name è di tipo sysname e il valore predefinito è NULL.

  • [ @notify_netsend_operator_name = ] 'netsend_name'
    Nome dell'operatore a cui viene inviato il messaggio di rete al termine del processo. netsend_nameè di tipo sysname e il valore predefinito è NULL.

  • [ @notify_page_operator_name = ] 'page_name'
    Nome dell'operatore a cui inviare il messaggio sul cercapersone al termine del processo. page_nameè di tipo sysname e il valore predefinito è NULL.

  • [ @delete_level = ] delete_level
    Valore che indica quando eliminare il processo. delete_valueè di tipo int e il valore predefinito è 0, che indica mai. delete_levelutilizza gli stessi valori di eventlog_level.

    [!NOTA]

    Quando delete_level è uguale a 3, il processo viene eseguito una sola volta, indipendentemente dalle pianificazioni definite per tale processo. Inoltre, se un processo si autoelimina, viene eliminato anche il contenuto della cronologia corrispondente.

  • [ @job_id = ] job_idOUTPUT
    Numero di identificazione del processo assegnato al processo se creato correttamente. job_idè una variabile di output di tipo uniqueidentifier e il valore predefinito è NULL.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Set di risultati

Nessuno

Osservazioni

La funzione @originating_server è inclusa nella procedura sp_add_job, ma non viene elencata nella sezione Argomenti. @originating_server è riservata per uso interno.

Dopo l'esecuzione di sp_add_job per aggiungere un processo, sp_add_jobstep può essere utilizzata per aggiungere passaggi per l'esecuzione delle attività del processo. sp_add_jobschedule può essere utilizzata per creare la pianificazione utilizzata dal servizio SQL Server Agent per eseguire il processo. Utilizzare sp_add_jobserver per impostare l'istanza di SQL Server in cui viene eseguito il processo e sp_delete_jobserver per rimuovere il processo dall'istanza di SQL Server.

Se il processo verrà eseguito in uno o più server di destinazione in un ambiente multiserver, utilizzare sp_apply_job_to_targets per impostare i server di destinazione o i gruppi di server di destinazione per il processo Per rimuovere i processi dai server di destinazione o dai gruppi di server di destinazione, utilizzare sp_remove_job_from_targets.

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

Per eseguire questa stored procedure, gli utenti devono essere membri del ruolo predefinito del server sysadmin, oppure disporre di uno dei ruoli del database di SQL Server Agent seguenti, che si trovano nel database msdb:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Per informazioni sulle autorizzazioni specifiche associate a ognuno di questi ruoli predefiniti del database, vedere Ruoli di database predefiniti di SQL Server Agent.

Solo i membri del ruolo predefinito del server sysadmin possono impostare o modificare il valore di @owner_login_name. Se il valore di @owner_login_name viene impostato o modificato da utenti non membri del ruolo sysadmin, l'esecuzione della stored procedure ha esito negativo e viene restituito un errore.

Esempi

A.Aggiunta di un processo

In questo esempio viene aggiunto il nuovo processo denominato NightlyBackups.

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'NightlyBackups' ;
GO

B.Aggiunta di un processo con informazioni inviate tramite il cercapersone, la posta elettronica e la rete

In questo esempio viene creato il processo Ad hoc Sales Data Backup che in caso di esito negativo invia una notifica all'operatore François Ajenstat (tramite cercapersone, posta elettronica o messaggio popup di rete), mentre in caso di esito positivo si autoelimina.

[!NOTA]

In questo esempio si presuppone che l'operatore François Ajenstat e l'account di accesso françoisa esistano già.

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'Ad hoc Sales Data Backup', 
    @enabled = 1,
    @description = N'Ad hoc backup of sales data',
    @owner_login_name = N'françoisa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend = 2,
    @notify_level_page = 2,
    @notify_email_operator_name = N'François Ajenstat',
    @notify_netsend_operator_name = N'François Ajenstat', 
    @notify_page_operator_name = N'François Ajenstat',
    @delete_level = 1 ;
GO

Vedere anche

Riferimento

sp_add_schedule (Transact-SQL)

sp_add_jobstep (Transact-SQL)

sp_add_jobserver (Transact-SQL)

sp_apply_job_to_targets (Transact-SQL)

sp_delete_job (Transact-SQL)

sp_delete_jobserver (Transact-SQL)

sp_remove_job_from_targets (Transact-SQL)

sp_help_job (Transact-SQL)

sp_help_jobstep (Transact-SQL)

sp_update_job (Transact-SQL)

Stored procedure di sistema (Transact-SQL)