sp_update_jobstep (Transact-SQL)
Aplica-se a:SQL ServerAzure SQL Managed Instance
Altera a configuração de uma etapa em um trabalho que é usado para executar atividades automatizadas no serviço SQL Server Agent.
Transact-SQL convenções de sintaxe
Sintaxe
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' ]
[ ; ]
Argumentos
[ @job_id = ] 'job_id'
O número de identificação do posto de trabalho ao qual a etapa pertence.
@job_id é identificador exclusivo, com um padrão de NULL
.
Tanto @job_id como @job_name devem ser especificados, mas ambos não podem ser especificados.
[ @job_name = ] N'job_name'
O nome do trabalho ao qual a etapa pertence.
@job_name é sysname, com um padrão de NULL
.
Tanto @job_id como @job_name devem ser especificados, mas ambos não podem ser especificados.
[ @step_id = ] step_id
O número de identificação da etapa do trabalho a ser modificada. @step_id é int, sem padrão. Este número não pode ser alterado.
[ @step_name = ] N'step_name'
Um novo nome para a etapa.
@step_name é sysname, com um padrão de NULL
.
[ @subsystem = ] N'subsistema'
O subsistema usado pelo SQL Server Agent para executar @command.
@subsystem é nvarchar(40), com um padrão de NULL
.
[ @command = ] N'comando'
Os comandos a serem executados através @subsystem.
@command é nvarchar(max), com um padrão de NULL
.
[ @additional_parameters = ] N'additional_parameters'
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
[ @cmdexec_success_code = ] cmdexec_success_code
O valor retornado por um comando CmdExec subsistema para indicar que comando executado com êxito.
@cmdexec_success_code é int, com um padrão de NULL
.
[ @on_success_action = ] on_success_action
A ação a ser executada se a etapa for bem-sucedida.
@on_success_action é minúsculo, com um padrão de NULL
, e pode ser um desses valores.
Valor | Descrição (ação) |
---|---|
1 |
Desistir com sucesso |
2 |
Desistir com falha |
3 |
Ir para o próximo passo |
4 |
Ir para o passo @on_success_step_id |
[ @on_success_step_id = ] on_success_step_id
O número de identificação da etapa neste trabalho a ser executada se a etapa for bem-sucedida e @on_success_action for 4
.
@on_success_step_id é int, com um padrão de NULL
.
[ @on_fail_action = ] on_fail_action
A ação a ser executada se a etapa falhar. @on_fail_action é minúsculo, e pode ter um desses valores.
Valor | Descrição (ação) |
---|---|
1 |
Desistir com sucesso |
2 |
Desistir com falha |
3 |
Ir para o próximo passo |
4 |
Ir para o passo @on_fail_step_id |
[ @on_fail_step_id = ] on_fail_step_id
O número de identificação da etapa neste trabalho a ser executada se a etapa falhar e @on_fail_action estiver 4
.
@on_fail_step_id é int, com um padrão de NULL
.
[ @server = ] N'servidor'
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
[ @database_name = ] N'database_name'
O nome do banco de dados no qual executar uma etapa Transact-SQL.
@database_name é sysname, com um padrão de NULL
. Nomes entre colchetes ([]
) não são permitidos.
[ @database_user_name = ] N'database_user_name'
O nome do usuário do banco de dados a ser usado ao executar uma etapa de Transact-SQL.
@database_user_name é sysname, com um padrão de NULL
.
[ @retry_attempts = ] retry_attempts
O número de tentativas de repetição a serem usadas se esta etapa falhar.
@retry_attempts é int, com um padrão de NULL
.
[ @retry_interval = ] retry_interval
A quantidade de tempo em minutos entre as tentativas de repetição.
@retry_interval é int, com um padrão de NULL
.
[ @os_run_priority = ] os_run_priority
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
[ @output_file_name = ] N'output_file_name'
O nome do arquivo no qual a saída desta etapa é salva.
@output_file_name é nvarchar(200), com um padrão de NULL
. Este parâmetro só é válido com comandos executados em Transact-SQL ou subsistemas CmdExec.
Para definir @output_file_name de volta para NULL
, você deve definir @output_file_name para uma cadeia de caracteres vazia ou para uma cadeia de caracteres em branco, mas não pode usar a função CHAR(32)
.
Por exemplo, defina esse argumento como uma cadeia de caracteres vazia da seguinte maneira:
@output_file_name = ' '
[ @flags = ] bandeiras
Uma opção que controla o comportamento.
@flags é int, com um padrão de NULL
.
Valor | Descrição | Comentar |
---|---|---|
0 (padrão) |
Substituir arquivo de saída | |
2 |
Anexar ao arquivo de saída | |
4 |
Gravar Transact-SQL saída da etapa de trabalho no histórico de etapas | Aplicar ao tipo: Transact-SQL, Comando do Analysis Services e Consulta de Análise |
8 |
Gravar log na tabela (substituir histórico existente) | |
16 |
Gravar log na tabela (anexar ao histórico existente) | |
32 |
Gravar a saída da etapa de trabalho SSIS/CmdExe/PowerShell no histórico de etapas | Aplicar ao tipo: CmdExe, PowerShell e pacote Integration Services |
[ @proxy_id = ] proxy_id
O número de ID do proxy como o passo de trabalho é executado.
@proxy_id é int, com um padrão de NULL
. Se nenhuma @proxy_id for especificada, nenhuma @proxy_name for especificada e nenhuma @database_user_name for especificada, a etapa de trabalho será executada como a conta de serviço do SQL Server Agent.
[ @proxy_name = ] N'proxy_name'
O nome do proxy como o qual a etapa de trabalho é executada.
@proxy_name é sysname, com um padrão de NULL
. Se nenhuma @proxy_id for especificada, nenhuma @proxy_name for especificada e nenhuma @database_user_name for especificada, a etapa de trabalho será executada como a conta de serviço do SQL Server Agent.
Valores de código de retorno
0
(sucesso) ou 1
(fracasso).
Comentários
sp_update_jobstep
deve ser executado a partir do banco de dados msdb
.
A atualização de uma etapa do trabalho incrementa o número da versão do trabalho.
Este procedimento armazenado partilha o nome de sp_update_jobstep
com um objeto semelhante para o serviço Trabalhos Elásticos do Azure para a Base de Dados SQL do Azure. Para obter informações sobre a versão de trabalhos elásticos, consulte jobs.sp_update_jobstep (Azure Elastic Jobs).
Permissões
Você pode conceder permissões de EXECUTE
neste procedimento, mas essas permissões podem ser substituídas durante uma atualização do SQL Server.
Outros usuários devem receber uma das seguintes funções de banco de dados fixas do SQL Server Agent no banco de dados msdb
:
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
Para obter detalhes sobre as permissões dessas funções, consulte Funções de banco de dados fixas do SQL Server Agent.
Somente membros de sysadmin podem atualizar uma etapa de trabalho de um trabalho de propriedade de outro usuário.
Se a etapa de trabalho exigir acesso a um proxy, o criador da etapa de trabalho deverá ter acesso ao proxy para a etapa de trabalho. Todos os subsistemas, exceto o Transact-SQL, exigem uma conta proxy. Os membros de sysadmin têm acesso a todos os proxies e podem usar a conta de serviço do SQL Server Agent para o proxy.
Exemplos
O exemplo a seguir altera o número de tentativas de repetição para a primeira etapa do trabalho de Weekly Sales Data Backup
. Depois de executar este exemplo, o número de tentativas de repetição é 10
.
USE msdb;
GO
EXECUTE dbo.sp_update_jobstep
@job_name = N'Weekly Sales Data Backup',
@step_id = 1,
@retry_attempts = 10;
GO