sp_update_jobstep (Transact-SQL)
Modifica l'impostazione di un passaggio in un processo utilizzato per l'esecuzione di operazioni automatizzate.
Sintassi
sp_update_jobstep
{ [@job_id =] job_id
| [@job_name =] 'job_name' } ,
[@step_id =] step_id
[ , [@step_name =] 'step_name' ]
[ , [@subsystem =] 'subsystem' ]
[ , [@command =] 'command' ]
[ , [@additional_parameters =] 'parameters' ]
[ , [@cmdexec_success_code =] success_code ]
[ , [@on_success_action =] success_action ]
[ , [@on_success_step_id =] success_step_id ]
[ , [@on_fail_action =] fail_action ]
[ , [@on_fail_step_id =] fail_step_id ]
[ , [@server =] 'server' ]
[ , [@database_name =] 'database' ]
[ , [@database_user_name =] 'user' ]
[ , [@retry_attempts =] retry_attempts ]
[ , [@retry_interval =] retry_interval ]
[ , [@os_run_priority =] run_priority ]
[ , [@output_file_name =] 'file_name' ]
[ , [@flags =] flags ]
[ , { [ @proxy_id = ] proxy_id
| [ @proxy_name = ] 'proxy_name' }
Argomenti
[ @job_id =] job_id
Numero di identificazione del processo a cui appartiene il passaggio. job_id è di tipo uniqueidentifier e il valore predefinito è NULL. È necessario specificare l'argomento job_id oppure l'argomento job_name ma non è possibile specificarli entrambi.[ @job_name =] 'job_name'
Nome del processo a cui appartiene il passaggio. job_nameè di tipo sysname e il valore predefinito è NULL. È necessario specificare l'argomento job_id oppure l'argomento job_name ma non è possibile specificarli entrambi.[ @step_id =] step_id
Numero di identificazione del passaggio del processo da modificare. Questo numero non è modificabile. step_idè di tipo int e non prevede alcun valore predefinito.[ @step_name =] 'step_name'
Nuovo nome del processo. step_nameè di tipo sysname e il valore predefinito è NULL.[ @subsystem =] 'subsystem'
Sottosistema utilizzato da Microsoft SQL Server Agent per eseguire command. subsystem è di tipo nvarchar(40) e il valore predefinito è NULL.[ @command =] 'command'
Uno o più comandi da eseguire tramite subsystem. command è di tipo nvarchar(max) e il valore predefinito è NULL.[ @additional_parameters =] 'parameters'
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.[ @cmdexec_success_code =] success_code
Il valore restituito da un comando del sottosistema CmdExec per indicare che command è stato eseguito senza errori. success_code è di tipo int e il valore predefinito è NULL.[ @on_success_action =] success_action
Azione da eseguire se il passaggio ha esito positivo. success_action è di tipo tinyint e il valore predefinito è NULL. I valori possibili sono i seguenti.Valore
Descrizione (azione)
1
Uscita in caso di esito positivo
2
Uscita in caso di esito negativo
3
Esecuzione del passaggio successivo
4
Esecuzione del passaggio success_step_id.
[ @on_success_step_id =] success_step_id
ID del passaggio del processo da eseguire se il passaggio ha esito positivo e success_action è uguale a 4. success_step_id è di tipo int e il valore predefinito è NULL.[ @on_fail_action =] fail_action
Azione da eseguire se il passaggio ha esito negativo. fail_action è di tipo tinyint e il valore predefinito è NULL. I possibili valori sono i seguenti.Valore
Descrizione (azione)
1
Uscita in caso di esito positivo
2
Uscita in caso di esito negativo
3
Esecuzione del passaggio successivo
4
Esecuzione del passaggio fail_step_id.
[ @on_fail_step_id =] fail_step_id
ID del passaggio del processo da eseguire se il passaggio ha esito negativo e fail_action è uguale a 4. fail_step_id è di tipo int e il valore predefinito è NULL.[ @server =] 'server'
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. server è di tipo nvarchar(128) e il valore predefinito è NULL.[ @database_name =] 'database'
Nome del database in cui eseguire un passaggio Transact-SQL. databaseè di tipo sysname. I nomi racchiusi tra parentesi quadre ([ ]) non sono ammessi. Il valore predefinito è NULL.[ @database_user_name =] 'user'
Nome dell'account utente da utilizzare quando viene eseguito un passaggio Transact-SQL. userè di tipo sysname e il valore predefinito è NULL.[ @retry_attempts =] retry_attempts
Numero di tentativi da eseguire se il passaggio ha esito negativo. retry_attemptsè di tipo int e il valore predefinito è NULL.[ @retry_interval =] retry_interval
Intervallo, in minuti, che intercorre tra due tentativi successivi. retry_interval è di tipo int e il valore predefinito è NULL.[ @os_run_priority =] run_priority
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.[ @output_file_name =] 'file_name'
Nome del file in cui salvare l'output del passaggio. file_name è di tipo nvarchar(200) e il valore predefinito è NULL. Questo parametro è valido solo con comandi eseguiti nei sottosistemi Transact-SQL o CmdExec.Per impostare nuovamente output_file_name su NULL, è necessario impostare output_file_name su una stringa vuota (' ') oppure su una stringa di caratteri vuoti. Non è possibile utilizzare la funzione CHAR(32). Ad esempio, impostare questo argomento su una stringa vuota nel modo descritto di seguito:
@output_file_name = ' '
[ @flags =] flags
Opzione che controlla il funzionamento. flags è di tipo int. I possibili valori sono i seguenti.Valore
Descrizione
0 (predefinito)
L'output sovrascrive il contenuto del file di output.
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 è di tipo int e il valore predefinito è NULL. Se proxy_id, proxy_name e user_name vengono omessi, il passaggio del processo viene eseguito con l'account di servizio per SQL Server Agent.[ @proxy_name= ] 'proxy_name'
Nome del proxy con il cui account viene eseguito il passaggio del processo. proxy_name è di tipo sysname e il valore predefinito è NULL. Se proxy_id, proxy_name e user_name vengono omessi, il passaggio del processo viene eseguito con l'account di servizio per SQL Server Agent.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Osservazioni
La stored procedure sp_update_jobstep deve essere eseguita dal database msdb.
L'aggiornamento di un passaggio di processo comporta un incremento del numero di versione del processo.
Autorizzazioni
Per impostazione predefinita, questa stored procedure può essere eseguita dai membri del ruolo predefinito del server sysadmin. Gli altri utenti devono appartenere a uno dei ruoli predefiniti del database di SQL Server Agent nel database msdb:
SQLAgentUserRole
SQLAgentReaderRole
SQLAgentOperatorRole
Per informazioni sulle autorizzazioni di questi ruoli, vedere Ruoli di database predefiniti di SQL Server Agent.
Solo i membri del ruolo predefinito del server sysadmin possono aggiornare un passaggio di 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 possono accedere a tutti i proxy e utilizzare 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 sarà 10.
USE msdb ;
GO
EXEC dbo.sp_update_jobstep
@job_name = N'Weekly Sales Data Backup',
@step_id = 1,
@retry_attempts = 10 ;
GO
Vedere anche