É possível configurar um alerta no SQL Server 2008 que enviará um email sempre que um trabalho em uma categoria específica falhar?
Gostaria de saber porque gostaria de configurar um email sempre que uma assinatura do SSRS falhar - e todas essas assinaturas são trabalhos na categoria Servidor de Relatório .
EDIT - acontece que, quando uma assinatura do SSRS falha, o trabalho em si não falha, portanto, minha pergunta não se aplica ao uso do monitoramento de assinatura do SSRS. No entanto, eu ainda gostaria de saber para outros trabalhos que executamos em nosso ambiente
AND EXISTS
parte doINSERT/SELECT
. E provavelmente mude o nomeReportServerJob_FailQueue
para algo mais genérico. :-)Respostas:
Você pode criar um trabalho que verifique a tabela msdb.dbo.sysjobhistory a cada minuto (ou com a frequência que desejar). Você pode implementar uma tabela de filas para enviar apenas a mensagem para qualquer falha de instância única uma vez.
Portanto, seu código, que você pode agendar em um trabalho, se torna:
Agora, suponho que você queira enviar um email individual para cada falha, portanto isso também pode fazer parte do trabalho (ou parte de um trabalho diferente, embora isso não seja necessariamente sensato):
Existem outras opções também:
Se o Database Mail ainda não estiver configurado, consulte este tutorial .
Você também pode usar ferramentas de terceiros (por exemplo, SQL Sentry Event Manager ) que simplificarão muito isso. Divulgação completa: Trabalho para o SQL Sentry.
fonte
Com base na sua edição, isso seria apenas uma extensão da resposta de Aaron, referente às falhas de assinatura do SSRS (não apenas ao trabalho do SQL Agent). Eu sugeriria apenas adicionar uma etapa ao trabalho de monitoramento de trabalho, ou você poderia fazer isso como um trabalho separado.
Para obter o status da assinatura, basta verificar a
ReportServer.dbo.ExecutionLog3
visualização . AStatus
coluna mostrará tudo, excetorsSuccess
falhas. Basta filtrar porRequestType = 'Subscription'
. Você deseja incluir uma verificação de tempo, para não verificar todos os registros a cada vez. Se você executar o trabalho a cada 15 minutos, verifiqueTimeStart
os últimos 15 minutos.fonte