Eu quero criar um alerta como os de Brent Ozar's How to Configure SQL Server Agent Alerts , mas não consegui encontrar uma mensagem relacionada ao erro que eu quero monitorar em sys.messages como diz o documento sp_add_alert e o problema que eu quero monitorar não gerou nenhum erro registrado. Se eu usar apenas sp_addmessage , acredito que ainda faltará a verificação que aciona o erro. E se eu criar um trabalho para fazer a verificação, não preciso do alarme, pois o próprio trabalho pode enviar o e-mail.
Qual é a maneira correta de criar um novo alerta?
Fundo
Recentemente as aplicações do meu ambiente começaram a falhar na conexão no SQL Server e demoramos um pouco para percebermos que o problema era devido a instância atingir aquele limite de 32k da instância (o SQL Server permite no máximo 32.767 conexões de usuário ). O connection eater era um aplicativo mal configurado e o desenvolvedor o corrigiu agora, mas não quero ser surpreendido novamente porque algum outro aplicativo causou a mesma situação, daí a necessidade do alerta. Um alerta para notificar quando o número de conexão atingir um limite como 10K seria ótimo, mas apenas alertar se o limite de 32K foi atingido ajudaria.
Seguindo as instruções de AMtwo e Tibor Karaszi , decidi criar um trabalho de agente que verifica se um limite foi ultrapassado e, se sim, relataria os 10 principais aplicativos que consomem mais conexões. Eu posso obter as informações que preciso com isso:
Para gerar um email mais informativo e bem formatado peguei emprestado algumas ideias (para não dizer a maior parte do código) do Alerting on SQL Server Blocking do AMtwo e o resultado foi este:
Esse código foi adicionado a um trabalho que é executado em algum intervalo e envia o alerta em um email formatado , se necessário. Ele fez o truque.
Conteúdo referenciado:
dbo.EmailCSS_Get()
dbo.EmailServerInfo_Get()
Você não está perdendo nada. Um alerta de evento do Agente requer um erro da instância do sql server no log de eventos. O agente pesquisa o log de eventos a cada 20 segundos. Muito simples e direto.
Portanto, se você precisar produzir esse erro sozinho (como neste caso), poderá enviar o e-mail desse código em vez de fazer o desvio do alerta de evento.