Partilhar via


sp_update_jobstep (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Altera a configuração de uma etapa em um trabalho que é usado para executar atividades automatizadas no serviço SQL Server Agent.

Convenções de sintaxe de Transact-SQL

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 trabalho ao qual a etapa pertence. @job_id é uniqueidentifier, com um padrão de NULL.

Tanto @job_id quanto @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 quanto @job_name devem ser especificados, mas ambos não podem ser especificados.

@step_id [ = ] step_id

O número de identificação da etapa de trabalho que será modificado. @step_id é int, sem padrão. Esse 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'

O(s) comando(s) a ser(em) executado(s) por meio @subsystem. @command é nvarchar(max), com um padrão de NULL.

@additional_parameters [ = ] N'additional_parameters'

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

@cmdexec_success_code [ = ] cmdexec_success_code

O valor retornado por um comando de subsistema CmdExec para indicar que o comando foi 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 tiver êxito. @on_success_action é tinyint, com um padrão de NULL, e pode ser um desses valores.

Valor Descrição (ação)
1 Saia com sucesso
2 Sair com falha
3 Ir para a próxima etapa
4 Vá para a etapa @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 é tinyint e pode ter um desses valores.

Valor Descrição (ação)
1 Saia com sucesso
2 Sair com falha
3 Ir para a próxima etapa
4 Vá para a etapa @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 for 4. @on_fail_step_id é int, com um padrão de NULL.

@server [ = ] N'servidor'

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está 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 Transact-SQL. @database_user_name é sysname, com um padrão de NULL.

@retry_attempts [ = ] retry_attempts

O número de novas tentativas a serem usadas se esta etapa apresentar falha. @retry_attempts é int, com um padrão de NULL.

@retry_interval [ = ] retry_interval

A quantidade de tempo, em minutos, entre as novas tentativas. @retry_interval é int, com um padrão de NULL.

@os_run_priority [ = ] os_run_priority

Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

@output_file_name [ = ] N'output_file_name'

O nome do arquivo no qual a saída desta etapa é gravado. @output_file_name é nvarchar(200), com um padrão de NULL. Esse parâmetro só é válido com comandos em execução nos subsistemas Transact-SQL ou 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 CHAR(32) função.

Por exemplo, defina este argumento como uma cadeia de caracteres vazios como segue:

@output_file_name = ' '

@flags [ = ] sinalizadores

Uma opção que controla comportamento. @flags é int, com um padrão de NULL.

Valor Descrição
0 (padrão) Substitui o arquivo de saída
2 Anexa a um arquivo de saída
4 Grava a saída da etapa de trabalho do Transact-SQL no histórico de etapas
8 Grava o log na tabela (substitui o histórico existente)
16 Grava o log na tabela (anexa ao histórico existente)

@proxy_id [ = ] proxy_id

O número da ID do proxy com o qual a etapa de trabalho é executada. @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 com 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 do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_update_jobstep deve ser executado a partir do msdb banco de dados.

A atualização de uma etapa de trabalho incrementa o número de versão do trabalho.

Esse procedimento armazenado compartilha o nome de sp_update_jobstep com um objeto semelhante para o serviço de Trabalhos Elásticos do Azure para Banco de Dados SQL do Azure. Para obter informações sobre a versão dos trabalhos elásticos, consulte jobs.sp_update_jobstep (Trabalhos Elásticos do Azure).

Permissões

Esse procedimento armazenado pertence à função db_owner . Você pode conceder EXECUTE permissões para qualquer usuário, 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 msdb SQL Server Agent no banco de dados:

  • 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 do sysadmin podem atualizar uma etapa de trabalho de um trabalho pertencente a outro usuário.

Se a etapa de trabalho requer acesso a um proxy, o criador da etapa de trabalho deve ter acesso ao proxy para a etapa de trabalho. Todos os subsistemas, menos o Transact-SQL, requerem uma conta proxy. Os membros do 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 da primeira etapa do trabalho Weekly Sales Data Backup. Depois de executar este exemplo, o número de tentativas de repetição é 10.

USE msdb;
GO

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