Guia de configuração de Notificação de Jobs no ambiente SQL Compartilhado SkyNova
1. CRIAR O OPERATOR
EXEC msdb.dbo.usp_TenantSqlAgentOperator_Create
@OperatorName = N'NOTIFICATION_OPERATOR',
@EmailAddress = N'<EMAIL_TESTE>',
@Enabled = 1;
GO2. CRIAR O JOB
EXEC msdb.dbo.sp_add_job
@job_name = N'NOTIFICATION_JOB',
@enabled = 1,
@description = N'NOTIFICATION - teste de notificação';
GO3. CRIAR UM STEP DE FALHA CONTROLADA
EXEC msdb.dbo.sp_add_jobstep
@job_name = N'NOTIFICATION_JOB',
@step_name = N'Falha controlada',
@step_id = 1,
@subsystem = N'TSQL',
@database_name = N'<MEU_DATABASE>',
@command = N'
THROW 51000, ''NOTIFICATION - falha controlada para notificação'', 1;',
@on_success_action = 1,
@on_fail_action = 2;
GO4. VINCULAR AO SERVIDOR LOCAL
EXEC msdb.dbo.sp_add_jobserver
@job_name=N'NOTIFICATION_JOB',
@server_name=N'(LOCAL)';
GO5. CRIAR A NOTIFICAÇÃO
/*
Níveis:
0 = nunca
1 = sucesso
2 = falha
3 = conclusão
/*
--Configure falha
EXEC msdb.dbo.usp_TenantSqlAgentOperator_SetJobNotification
@JobName = N'NOTIFICATION_JOB',
@OperatorName = N'NOTIFICATION_OPERATOR',
@NotifyLevelEmail = 2;
GO6. CONSULTAR O VÍNCULO
SELECT
j.name AS JobName,
o.name AS OperatorName,
j.notify_level_email,
j.notify_level_page,
j.notify_level_netsend
FROM msdb.dbo.sysjobs AS j
LEFT JOIN msdb.dbo.sysoperators AS o
ON o.id = j.notify_email_operator_id
WHERE j.name = N'NOTIFICATION_JOB';
GO
/*
Resultado esperado:
OperatorName = NOTIFICATION_OPERATOR
notify_level_email = 2
/*7. MODIFICAR O NÍVEL
--Modificar para conclusão
EXEC msdb.dbo.usp_TenantSqlAgentOperator_SetJobNotification
@JobName = N'NOTIFICATION_JOB',
@OperatorName = N'NOTIFICATION_OPERATOR',
@NotifyLevelEmail = 3;
GO
--Validar
--Resultado esperado: 3.
SELECT name, notify_level_email
FROM msdb.dbo.sysjobs
WHERE name=N'NOTIFICATION_JOB';
GO
--Voltar para falha:
EXEC msdb.dbo.usp_TenantSqlAgentOperator_SetJobNotification
@JobName = N'NOTIFICATION_JOB',
@OperatorName = N'NOTIFICATION_OPERATOR',
@NotifyLevelEmail = 2;
GO8. TESTE FUNCIONAL DO JOB
ATENÇÃO: Para receber o e-mail de verdade, o SQL Server Agent precisa estar configurado
pela plataforma para usar Database Mail. O vínculo pode estar correto mesmo que
a infraestrutura de Mail ainda não esteja habilitada.
--Inicie:
EXEC msdb.dbo.sp_start_job
@job_name=N'NOTIFICATION_JOB';
GO
--Consulte histórico:
SELECT TOP (20)
j.name,
h.step_id,
h.step_name,
h.run_status,
h.message,
h.run_date,
h.run_time
FROM msdb.dbo.sysjobhistory AS h
JOIN msdb.dbo.sysjobs AS j
ON j.job_id=h.job_id
WHERE j.name=N'NOTIFICATION_JOB'
ORDER BY h.instance_id DESC;
GO
--Resultado esperado do Job: FALHA CONTROLADA.9. REMOVER/DESLIGAR A NOTIFICAÇÃO
--O caminho suportado para desligar é nível 0:
EXEC msdb.dbo.usp_TenantSqlAgentOperator_SetJobNotification
@JobName = N'NOTIFICATION_JOB',
@OperatorName = N'NOTIFICATION_OPERATOR',
@NotifyLevelEmail = 0;
GO
--VALIDAR
--Resultado esperado: notify_level_email = 0.
SELECT
name,
notify_level_email
FROM msdb.dbo.sysjobs
WHERE name=N'NOTIFICATION_JOB';
GO10. EXCLUIR OS OBJETOS AUXILIARES
EXEC msdb.dbo.sp_delete_job
@job_name=N'NOTIFICATION_JOB',
@delete_unused_schedule=1;
GO
EXEC msdb.dbo.usp_TenantSqlAgentOperator_Delete
@OperatorName=N'NOTIFICATION_OPERATOR',
@ConfirmOperatorName=N'NOTIFICATION_OPERATOR';
GO11. VALIDAÇÃO FINAL
SELECT * FROM msdb.dbo.sysjobs
WHERE name=N'NOTIFICATION_JOB';
SELECT * FROM msdb.dbo.sysoperators
WHERE name=N'NOTIFICATION_OPERATOR';
GOResultado esperado: zero linhas.