Compartilhar via


sp_add_job (Transact-SQL)

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

Cria um novo trabalho executado pelo serviço SQL Server Agent.

Convenções de sintaxe de Transact-SQL

Importante

Atualmente, na Instância Gerenciada de SQL do Azure, a maioria dos recursos do SQL Server Agent é compatível, mas não todos. Confira Diferenças entre o T-SQL da Instância Gerenciada de SQL do Azure e o SQL Server para obter detalhes.

Sintaxe

sp_add_job
         [ @job_name = ] N'job_name'
     [ , [ @enabled = ] enabled ]
     [ , [ @description = ] N'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 ]
[ ; ]

Argumentos

@job_name

O nome do trabalho. O nome deve ser exclusivo e não pode conter o caractere de porcentagem (%). @job_name é nvarchar(128), sem padrão. Obrigatória.

@enabled

Indica o status do trabalho adicionado. enabled é tinyint, com um padrão de 1 (enabled). Se 0, o trabalho não estiver habilitado e não for executado de acordo com sua programação; no entanto, ele poderá ser executado manualmente.

@description

A descrição do trabalho. @description é nvarchar(512), com um padrão de NULL. Se @description for omitido, N'No description available' é usado.

@start_step_id

O número de identificação da primeira etapa a ser executada para o trabalho. @start_step_id é int, com um padrão de 1.

@category_name

A categoria do trabalho. @category_name é sysname, com um padrão de NULL.

@category_id

Um mecanismo independente de idioma para especificar uma categoria de trabalho. @category_id é int, com um padrão de NULL.

@owner_login_name

O nome do logon que é o proprietário do trabalho. @owner_login_name é sysname, com um padrão de , que é interpretado como o nome de NULLlogon atual. Somente membros da função de servidor fixa sysadmin podem definir ou alterar o valor para @owner_login_name. Se os usuários que não são membros da função sysadmin definirem ou alterarem o valor de @owner_login_name, a execução desse procedimento armazenado falhará e um erro será retornado.

@notify_level_eventlog

Um valor que indica quando colocar uma entrada no log de aplicativo do Microsoft Windows para este trabalho. @notify_level_eventlog é int e pode ser um destes valores:

Valor Descrição
0 Never
1 Caso haja êxito
2 (padrão) Caso haja falha
3 Sempre

@notify_level_email

Um valor que indica quando enviar um email após a conclusão deste trabalho. @notify_level_email é int, com um padrão de 0, que indica nunca. @notify_level_email usa os mesmos valores que @notify_level_eventlog.

@notify_level_netsend

Um valor que indica quando enviar uma mensagem da rede após a conclusão deste trabalho. @notify_level_netsend é int, com um padrão de 0, que indica nunca. @notify_level_netsend usa os mesmos valores que @notify_level_eventlog.

@notify_level_page

Um valor que indica quando enviar uma página após a conclusão deste trabalho. @notify_level_page é int, com um padrão de 0, que indica nunca. @notify_level_page usa os mesmos valores que @notify_level_eventlog.

@notify_email_operator_name

O nome de email da pessoa para a qual enviar email quando @notify_email_operator_name for alcançado. @notify_email_operator_name é sysname, com um padrão de NULL.

@notify_netsend_operator_name

O nome do operador para quem a mensagem da rede será enviada após a conclusão deste trabalho. @notify_netsend_operator_name é sysname, com um padrão de NULL.

@notify_page_operator_name

O nome da pessoa para quem uma mensagem de pager será enviada após a conclusão deste trabalho. @notify_page_operator_name é sysname, com um padrão de NULL.

@delete_level

Um valor que indica quando excluir o trabalho. delete_value é int, com um padrão de 0, o que significa nunca. @delete_level usa os mesmos valores que @notify_level_eventlog.

Observação

Quando @delete_level é 3, o trabalho é executado apenas uma vez, independentemente de quaisquer agendamentos definidos para o trabalho. Além disso, se um trabalho excluir a si próprio, todo o histórico do trabalho também será excluído.

@job_id SAÍDA

O número de identificação atribuído ao trabalho caso ele seja criado com êxito. @job_id é uma variável de saída do tipo uniqueidentifier, com um padrão de NULL.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Conjunto de resultados

Nenhum.

Comentários

@originating_server existe em sp_add_job, mas não está listado em Argumentos. @originating_server é reservado para uso interno.

Depois de sp_add_job executado para adicionar um trabalho, sp_add_jobstep pode ser usado para adicionar etapas que executam as atividades do trabalho. sp_add_jobschedule pode ser usado para criar o agendamento que o serviço SQL Server Agent usa para executar o trabalho.

Use sp_add_jobserver para definir a instância do SQL Server em que o trabalho é executado e sp_delete_jobserver para remover o trabalho da instância do SQL Server. Se o trabalho for executado em um ou mais servidores de destino em um ambiente multisservidor, use sp_apply_job_to_targets para definir os servidores de destino ou grupos de servidores de destino para o trabalho. Para remover trabalhos de servidores de destino ou grupos de servidores de destino, use sp_remove_job_from_targets. Não há suporte para o recurso de Administração de Vários Servidores (MSX/TSX) na Instância Gerenciada de SQL do Azure.

O SQL Server Management Studio fornece um modo gráfico fácil de gerenciar trabalhos e é o modo recomendado de criar e gerenciar a infra-estrutura de trabalho.

Esse procedimento armazenado compartilha o nome de sp_add_job 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_add_job (Trabalhos Elásticos do Azure).

Permissões

Você pode conceder EXECUTE permissões nesse 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 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 da função de servidor fixa sysadmin podem definir ou alterar o valor para @owner_login_name. Se os usuários que não são membros da função sysadmin definirem ou alterarem o valor de @owner_login_name, a execução desse procedimento armazenado falhará e um erro será retornado.

Exemplos

R. Adicionar um trabalho

Este exemplo adiciona um novo trabalho denominado NightlyBackups.

USE msdb;
GO

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

B. Adicionar um trabalho com pager, email e informações de envio de rede

Este exemplo cria um trabalho denominado Ad hoc Sales Data Backup que notifica François Ajenstat (por pager, email ou mensagem pop-up de rede) se o trabalho falhar, excluindo o trabalho após a conclusão com êxito.

Observação

Este exemplo supõe que já exista um operador denominado François Ajenstat e um logon nomeado françoisa.

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