Condividi tramite


sp_update_jobstep (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Modifica l'impostazione di un passaggio in un processo usato per eseguire attività automatizzate nel servizio SQL Server Agent.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_update_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    , [ @step_id = ] step_id
    [ , [ @step_name = ] N'step_name' ]
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
[ ; ]

Argomenti

[ @job_id = ] 'job_id'

Numero di identificazione del processo a cui appartiene il passaggio. @job_id è uniqueidentifier, con un valore predefinito .NULL

È necessario specificare @job_id o @job_name , ma non è possibile specificare entrambi.

[ @job_name = ] N'job_name'

Nome del processo a cui appartiene il passaggio. @job_name è sysname, con il valore predefinito NULL.

È necessario specificare @job_id o @job_name , ma non è possibile specificare entrambi.

[ @step_id = ] step_id

Numero di identificazione del passaggio del processo da modificare. @step_id è int, senza impostazione predefinita. Questo numero non può essere modificato.

[ @step_name = ] N'step_name'

Nuovo nome per il passaggio. @step_name è sysname, con un valore predefinito .NULL

[ @subsystem = ] N'subsystem'

Sottosistema usato da SQL Server Agent per eseguire @command. @subsystem è nvarchar(40), con il valore predefinito NULL.

[ @command = ] N'command'

Comandi da eseguire tramite @subsystem. @command è nvarchar(max), con un valore predefinito .NULL

[ @additional_parameters = ] N'additional_parameters'

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

[ @cmdexec_success_code = ] cmdexec_success_code

Valore restituito da un comando del sottosistema CmdExec per indicare che il comando è stato eseguito correttamente. @cmdexec_success_code è int, con il valore predefinito NULL.

[ @on_success_action = ] on_success_action

Azione da eseguire se il passaggio ha esito positivo. @on_success_action è tinyint, con un valore predefinito , NULLe può essere uno di questi valori.

Valore Descrizione (azione)
1 Uscita in caso di esito positivo
2 Uscita in caso di esito negativo
3 Esecuzione del passaggio successivo
4 Andare al passaggio @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

Numero di identificazione del passaggio in questo processo da eseguire se il passaggio ha esito positivo e @on_success_action è 4. @on_success_step_id è int, con il valore predefinito .NULL

[ @on_fail_action = ] on_fail_action

Azione da eseguire se il passaggio non viene completato correttamente. @on_fail_action è tinyint e può avere uno di questi valori.

Valore Descrizione (azione)
1 Uscita in caso di esito positivo
2 Uscita in caso di esito negativo
3 Esecuzione del passaggio successivo
4 Andare al passaggio @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

Numero di identificazione del passaggio in questo processo da eseguire se il passaggio ha esito negativo e @on_fail_action è 4. @on_fail_step_id è int, con il valore predefinito NULL.

[ @server = ] N'server'

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

[ @database_name = ] N'database_name'

Nome del database in cui eseguire un passaggio Transact-SQL. @database_name è sysname, con un valore predefinito .NULL I nomi racchiusi tra parentesi quadre ([]) non sono consentiti.

[ @database_user_name = ] N'database_user_name'

Nome dell'utente del database da usare durante l'esecuzione di un passaggio Transact-SQL. @database_user_name è sysname, con un valore predefinito .NULL

[ @retry_attempts = ] retry_attempts

Numero di tentativi da eseguire in caso di esecuzione errata del passaggio. @retry_attempts è int, con il valore predefinito .NULL

[ @retry_interval = ] retry_interval

Numero di minuti che devono trascorrere tra i tentativi. @retry_interval è int, con il valore predefinito .NULL

[ @os_run_priority = ] os_run_priority

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

[ @output_file_name = ] N'output_file_name'

Nome del file in cui salvare l'output del passaggio. @output_file_name è nvarchar(200), con il valore predefinito NULL. Questo parametro è valido solo con i comandi in esecuzione nei sottosistemi Transact-SQL o CmdExec .

Per impostare di nuovo @output_file_name su NULL, è necessario impostare @output_file_name su una stringa vuota o su una stringa di caratteri vuoti, ma non è possibile usare la CHAR(32) funzione .

Ad esempio, impostare questo argomento su una stringa vuota nel modo descritto di seguito:

@output_file_name = ' '

[ @flags = ] flag

Opzione che consente di controllare il comportamento. @flags è int, con il valore predefinito NULL.

valore Descrizione
0 (predefinito) Il file di output viene sovrascritto
2 L'output viene aggiunto alla fine del file di output.
4 L'output del passaggio del processo Transact-SQL viene scritto nella cronologia dei passaggi
8 Il log viene scritto nella tabella. La cronologia esistente viene sovrascritta
16 Il log viene scritto nella tabella in aggiunta alla cronologia esistente

[ @proxy_id = ] proxy_id

ID del proxy in base al quale viene eseguito il passaggio del processo. @proxy_id è int, con il valore predefinito NULL. Se non viene specificato alcun @proxy_id , non viene specificato alcun @proxy_name e non viene specificato alcun @database_user_name , il passaggio del processo viene eseguito come account del servizio per SQL Server Agent.

[ @proxy_name = ] N'proxy_name'

Nome del proxy in base al quale viene eseguito il passaggio del processo. @proxy_name è sysname, con il valore predefinito NULL. Se non viene specificato alcun @proxy_id , non viene specificato alcun @proxy_name e non viene specificato alcun @database_user_name , il passaggio del processo viene eseguito come account del servizio per SQL Server Agent.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_update_jobstep deve essere eseguito dal msdb database.

L'aggiornamento di un passaggio di processo comporta un incremento del numero di versione del processo.

Questa stored procedure condivide il nome di con un oggetto simile per il servizio Processi elastici di sp_update_jobstep Azure per database SQL di Azure. Per informazioni sulla versione dei processi elastici, vedere jobs.sp_update_jobstep (processi elastici di Azure).

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.

Solo i membri di sysadmin possono aggiornare un passaggio di processo di un processo di proprietà di un altro utente.

Se il passaggio di processo richiede l'accesso a un proxy, l'autore del passaggio deve disporre dell'accesso al proxy per tale passaggio. Tutti i sottosistemi, a esclusione di Transact-SQL, richiedono un account proxy. I membri di sysadmin hanno accesso a tutti i proxy e possono usare l'account del servizio SQL Server Agent per il proxy.

Esempi

Nell'esempio seguente viene modificato il numero di tentativi per il primo passaggio del processo Weekly Sales Data Backup. Dopo aver eseguito questo esempio, il numero di tentativi è 10.

USE msdb;
GO

EXEC dbo.sp_update_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_id = 1,
    @retry_attempts = 10;
GO