Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criar um trabalho do SQL Server Agent usando T-SQL


O SQL Server Agent é um serviço do Microsoft Windows que executa tarefas administrativas agendadas, chamadas de trabalhos no SQL Server.

O T-SQL inclui uma grande coleção de procedimentos armazenados que lidam com trabalhos do SQL Server Agent.

Aqui, usaremos alguns deles para criar e agendar um trabalho do SQL Server Agent.

Você também pode criar trabalhos do SQL Server Agent por meio da GUI (no SSMS), se preferir.

Ativar XPs de agente


Se esta for a primeira vez que você está criando um trabalho do SQL Server Agent em sua instância do SQL Server, provavelmente precisará habilitar os procedimentos armazenados estendidos do SQL Server Agent (Agent XPs).

Veja como fazer isso usando T-SQL e veja como fazer isso usando a GUI do SSMS.

Depois de fazer isso, você pode continuar e criar um trabalho do SQL Server Agent como o abaixo.

Exemplo


Aqui está um exemplo do código usado para criar e agendar um trabalho do SQL Server Agent.
USE msdb;  
GO  
EXEC sp_add_job  
    @job_name = N'BackupPetHotelDB' ;  
GO  
EXEC sp_add_jobstep  
    @job_name = N'BackupPetHotelDB',  
    @step_name = N'Run the backup',  
    @subsystem = N'TSQL',  
    @command = N'BACKUP DATABASE [PetHotel] TO DISK = N''C:\Backups\PetHotel.bak'' WITH CHECKSUM',
    @retry_attempts = 5,  
    @retry_interval = 5;  
GO
EXEC sp_add_schedule 
    @schedule_name = N'RunDailyAM',
    @freq_type = 4,
    @freq_interval = 4,
    @active_start_time = 041000;
GO  
EXEC sp_attach_schedule  
   @job_name = N'BackupPetHotelDB',  
   @schedule_name = N'RunDailyAM';  
GO  
EXEC sp_add_jobserver  
    @job_name = N'BackupPetHotelDB';  
GO

Aqui, usamos cinco procedimentos armazenados para criar e agendar o trabalho. A maioria desses procedimentos aceita muito mais argumentos (opcionais) do que usei neste exemplo. Para obter uma lista completa de argumentos disponíveis para cada procedimento, consulte os links na tabela abaixo.

Esses procedimentos armazenados estão no msdb banco de dados, e você pode ver que definimos msdb como o banco de dados atual antes de executá-los. Alternativamente, você pode qualificá-los com o nome do banco de dados (por exemplo, msdb.dbo.sp_add_job... , etc)

A tabela a seguir fornece uma visão geral rápida de cada procedimento.
Procedimento armazenado Descrição
sp_add_job Adiciona um novo trabalho executado pelo serviço SQL Agent.

Consulte o site da Microsoft para obter mais informações.
sp_add_jobstep Adiciona uma etapa que executa a operação real para o trabalho que foi adicionado com sp_add_job .

No exemplo acima, adicionamos uma etapa para fazer backup de um banco de dados. Especificamos isso fornecendo um comando T-SQL.

O @retry_interval é em minutos.

Consulte o site da Microsoft para obter mais informações.
sp_add_schedule Cria um agendamento que pode ser usado por qualquer número de trabalhos.

Nesse caso, demos @freq_type um valor de 4 que é diário. Também demos @freq_interval um valor de 4 , que também é diário.

A hora é baseada em um relógio de 24 horas e é inserida no formato HHMMSS. Nosso exemplo usa 041000 , que é 04:10:00.

Consulte o link da Microsoft abaixo para obter as várias opções disponíveis ao definir a frequência.

Consulte o site da Microsoft para obter mais informações.
sp_attach_schedule Define um agendamento para um trabalho. Aqui, anexamos a programação que adicionamos com sp_add_schedule ao trabalho que adicionamos com sp_add_job .

Observe que o agendamento e o trabalho devem ter o mesmo proprietário.

Além disso, um agendamento pode ser definido para mais de um trabalho e um trabalho pode ser executado em mais de um agendamento.

Consulte o site da Microsoft para obter mais informações.
sp_add_jobserver Destina o trabalho especificado no servidor especificado. Isso também aceita um @server_name argumento para especificar o servidor.

O valor padrão é (LOCAL) para a máquina local. Em nosso exemplo, usamos a máquina local e, portanto, conseguimos omitir esse argumento.

Consulte o site da Microsoft para obter mais informações.

Visualizar o trabalho


Você pode usar o sp_help_job procedimento armazenado no msdb banco de dados para exibir os trabalhos do SQL Server Agent que foram criados no servidor.
EXEC sp_help_job;

Aqui está o que parece na minha máquina de teste:

Neste caso, há três empregos.

Você também pode ver os trabalhos no Pesquisador de Objetos quando tiver o SQL Server Agent> Trabalhos nó expandido.

O sp_help_job procedimento armazenado permite que você forneça o nome ou ID de um trabalho para obter informações mais detalhadas sobre esse trabalho.

Exemplo:
EXEC sp_help_job @job_name= 'BackupPetHotelDB';

Resultado:

Os resultados são separados nos detalhes do trabalho principal, nas etapas do trabalho, nos agendamentos do trabalho e nos servidores de destino do trabalho. Isso reflete praticamente os procedimentos armazenados que executamos quando criamos o trabalho.

Consulte a documentação da Microsoft para sp_help_job para obter mais informações, bem como uma lista de outros argumentos que você pode fornecer.

Testar o trabalho


Você pode usar o sp_start_job procedimento armazenado para testar se seu trabalho será executado. Este procedimento aceita o nome ou ID do trabalho e executará o trabalho assim que você executar o procedimento.

Consulte Como executar um trabalho do SQL Server Agent usando T-SQL para obter um exemplo.