Os jobs do SQL Server Agent são úteis para automatizar tarefas administrativas recorrentes, como manutenção do banco de dados, processamento de dados, envio de notificações, entre outros.
Em resumo, um "job" no contexto do SQL Server é uma tarefa agendada que pode executar uma série de comandos ou procedimentos armazenados de forma automatizada, de acordo com um cronograma ou condição específica.
Um "SQL Server Agent Job" é uma unidade de trabalho que pode ser agendada para executar uma ou mais tarefas em um horário específico, em resposta a um evento específico, ou de acordo com uma condição específica. Por exemplo, você pode criar um job para executar um backup do banco de dados todos os dias à meia-noite.
📌 Identificar quais Jobs existem.
Contem uma coluna com o script. O SQL Server não armazena diretamente o código de construção de jobs da mesma forma que faz para stored procedures, funções ou views.
USE msdb;
SELECT
j.job_id,
j.name AS job_name,
FORMAT(j.date_created, 'dd/MM/yyyy') AS DataCriacao,
FORMAT(j.date_modified, 'dd/MM/yyyy') AS DataModificacao,
js.step_id,
js.step_name,
js.command,
js.database_name,
js.output_file_name,
sjs.next_run_date,
sjs.next_run_time,
j.enabled,
SUSER_SNAME(j.owner_sid) AS [Owner]
FROM msdb.dbo.sysjobs j
JOIN msdb.dbo.sysjobsteps js ON j.job_id = js.job_id
LEFT JOIN msdb.dbo.sysjobschedules sjs ON j.job_id = sjs.job_id
ORDER BY j.job_id, js.step_id, sjs.next_run_date, sjs.next_run_time;
📌 Criar um job
Abra o SQL Server Management Studio (SSMS) e conecte-se ao seu servidor.
Expanda o nó "SQL Server Agent" na janela do Object Explorer.
Clique com o botão direito em "Jobs" e selecione "New Job". Isso abrirá a janela de criação de um novo job.
Na janela de criação do job, você pode preencher as informações básicas, como o nome do job e uma descrição.
Em seguida, vá para a guia "Steps" e clique em "New" para adicionar uma nova etapa ao job. Aqui você pode especificar o comando ou procedimento armazenado que o job irá executar.
Depois de adicionar as etapas necessárias, vá para a guia "Schedules" para definir o agendamento do job. Você pode configurar o job para ser executado em um horário específico, em intervalos regulares ou em resposta a um evento específico.
Após configurar o agendamento, você pode ir para as guias "Alerts" e "Notifications" para configurar alertas e notificações relacionados ao job, se necessário.
Por fim, clique em "OK" para criar o job.
USE msdb;
GO
BEGIN TRANSACTION;
DECLARE @ReturnCode INT;
SELECT @ReturnCode = 0;
DECLARE @jobId BINARY(16);
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'MeuJob',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=0,
@notify_level_netsend=0,
@notify_level_page=0,
@delete_level=0,
@description=N'Meu job criado via script T-SQL',
@category_name=N'Database Maintenance',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT;
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback;
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'MeuStep',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_fail_action=2,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'SELECT GETDATE();',
@database_name=N'master',
@flags=0;
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback;
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)';
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback;
COMMIT TRANSACTION;
GOTO EndSave;
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION;
EndSave:
GO
@job_name: Este é o nome do job que você está criando.
@enabled: Este parâmetro determina se o job está habilitado (1) ou desabilitado (0).
@description: Aqui você pode fornecer uma descrição para o job.
@category_name: O nome da categoria à qual o job pertence.
@owner_login_name: O nome do login que será o proprietário do job.
(em andamento)