Partilhar via


sp_add_job (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL Managed Instance

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

Transact-SQL convenções de sintaxe

Importante

No Azure SQL Managed Instance, a maioria dos recursos do SQL Server Agent, mas não todos, são suportados no momento. Consulte as diferenças entre o Azure SQL Managed Instance T-SQL e o SQL Server para mais 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 ]
[ ; ]

Arguments

@job_name

O nome da tarefa. O nome tem de ser único e não pode conter o carácter percentagem (%). @job_name é nvarchar(128), sem padrão. Required.

@enabled

Indica o estado do trabalho adicionado. Ativado é tinyint, com um padrão de 1 (ativado). Se 0, o trabalho não está ativado e não corre conforme o seu cronograma; no entanto, pode 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 do primeiro passo a executar para o trabalho. @start_step_id é int, com um padrão de 1.

@category_name

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

@category_id

Um mecanismo independente da linguagem para especificar uma categoria de função. @category_id é int, com um padrão de NULL.

@owner_login_name

O nome do utilizador que detém o trabalho. @owner_login_name é sysname, com um padrão de NULL, que é interpretado como o nome de login atual. Apenas os membros do papel fixo de servidor sysadmin podem definir ou alterar o valor para @owner_login_name. Se utilizadores que não pertencem ao conjunto de funções de administrador do sistema ou alterarem o valor de @owner_login_name, a execução deste procedimento armazenado falha e um erro é devolvedo.

@notify_level_eventlog

Um valor que indica quando colocar uma entrada no registo da aplicação Microsoft Windows para este trabalho. @notify_level_eventlog é int, e pode ser um destes valores:

Valor Description
0 Nunca
1 Sobre o sucesso
2 (padrão) Sobre o fracasso
3 Sempre

@notify_level_email

Um valor que indica quando enviar um e-mail após a conclusão deste trabalho. @notify_level_email é int, com um padrão de 0, o 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 de rede após a conclusão deste trabalho. @notify_level_netsend é int, com um padrão de 0, o 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, o que indica nunca. @notify_level_page usa os mesmos valores que @notify_level_eventlog.

@notify_email_operator_name

O nome do e-mail da pessoa a quem enviar o e-mail quando @notify_email_operator_name for contactado. @notify_email_operator_name é sysname, com um padrão de NULL.

@notify_netsend_operator_name

O nome do operador a quem a mensagem de rede é 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 a chamar 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 eliminar 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 cronogramas definidos para o trabalho. Além disso, se um trabalho se apagar a si próprio, todo o histórico do trabalho também é eliminado.

@job_id SAÍDA

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

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Conjunto de resultados

Nenhum.

Observações

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

Depois de sp_add_job ter sido executado para adicionar um trabalho, sp_add_jobstep pode ser usado para adicionar passos que realizam as atividades do trabalho. sp_add_jobschedule pode ser usado para criar o cronograma que o serviço SQL Server Agent utiliza para executar o trabalho.

Use sp_add_jobserver para definir a instância do SQL Server onde o trabalho é executado e sp_delete_jobserver para remover o trabalho da instância do SQL Server. Se a tarefa for executada num ou mais servidores alvo num ambiente multiservidor, use sp_apply_job_to_targets para definir os servidores alvo ou grupos de servidores alvo para a tarefa. Para remover trabalhos dos servidores ou grupos de servidores alvo, use sp_remove_job_from_targets. A funcionalidade Multi Server Administration (MSX/TSX) não é suportada no Azure SQL Managed Instance.

O SQL Server Management Studio fornece uma maneira gráfica fácil de gerenciar trabalhos e é a maneira recomendada de criar e gerenciar a infraestrutura de trabalho.

Este procedimento armazenado partilha o nome de sp_add_job com um objeto semelhante para o serviço Azure Elastic Jobs para Azure SQL Database. Para informações sobre a versão do Elastic Jobs, veja jobs.sp_add_job (Azure Elastic Jobs).

Permissions

Pode conceder EXECUTE permissões neste procedimento, mas essas permissões podem ser anuladas durante uma atualização do SQL Server.

Outros utilizadores devem receber um dos seguintes papéis fixos de base de dados SQL Server Agent na msdb base de dados:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Para detalhes sobre as permissões destes papéis, consulte Funções de Base de Dados Fixas do Agente SQL Server.

Apenas os membros do papel fixo de servidor sysadmin podem definir ou alterar o valor para @owner_login_name. Se utilizadores que não pertencem ao conjunto de funções de administrador do sistema ou alterarem o valor de @owner_login_name, a execução deste procedimento armazenado falha e um erro é devolvedo.

Examples

A. Adicionar um emprego

Este exemplo adiciona um novo trabalho chamado NightlyBackups.

USE msdb;
GO

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

B. Adicione um emprego com pager, e-mail e informações de envio da internet

Este exemplo cria uma tarefa chamada Ad hoc Sales Data Backup que notifica François Ajenstat (por pager, e-mail ou mensagem pop-up de rede) se a tarefa falhar, e apaga a tarefa após a conclusão bem-sucedida.

Observação

Este exemplo assume que já existem um operador nomeado François Ajenstat e um login nomeado françoisa .

USE msdb;
GO

EXECUTE 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