- Configurar o SQL Server Agent para usar o email do banco de dados
- Crie o (s) operador (es) e-mail, pager, horas, etc.
- Configure o plano de manutenção para enviar o (s) operador (es) apropriado (s) com base na condição de saída.
Eu tenho um plano de manutenção na minha caixa do SQL 2008 - Eu gostaria de enviar um endereço de e-mail quando (ou se) ele falhar. Eu configurei o e-mail do banco de dados e posso enviar um e-mail de teste.
Como posso fazer isso?
Adicione uma tarefa Execute SQL ao seu plano de manutenção que faz a chamada para sp_send_dbmail e conecte as rotas de falha de qualquer uma das suas outras tarefas a essa tarefa.
Adicionamos am "Execute T-SQL Statement Task", que chama um procedimento armazenado, com o nome do plano de manutenção como um parâmetro:
EXEC server.schema.SP_SENDALERT 'plan.subplan';
Nesse procedimento armazenado, consultamos o SYSJOBS e o SYSJOBHISTORY para obter o plano para obter a última 'falha', que enviamos para 'IT Support' como parte de um send_dbmail (que é orientado por um procedimento que loop através de mensagens não enviadas na tabela MESSAGING), algo ao longo das linhas deste:
CREATE PROCEDURE SP_SENDALERT (@plan VARCHAR(MAX))
AS
BEGIN
DECLARE @error VARCHAR(MAX)
SELECT TOP 1 @error = SJH.[MESSAGE]FROM MSDB.DBO.SYSJOBS SJ
LEFT JOIN MSDB.DBO.SYSJOBHISTORY SJH ON SJ.JOB_ID = SJH.JOB_ID
WHERE SJ.ENABLED = 1
AND SJH.RUN_STATUS = 0
AND SJ.[NAME] = @plan
ORDER BY SJH.RUN_DATE, RUN_TIME DESC
INSERT INTO database.schema.MESSAGING
(MESSAGE_TYPE, MESSAGE_SUBJECT, MESSAGE_BODY, RECIPIENTS, RECORD_ADDED)
VALUES (1, 'ERROR: ' + @plan, @error, '[email protected]', GETDATE())
END
Tags maintenance sql-server