Estou começando com o corretor de serviços. Já consegui configurar uma notificação de evento para processos bloqueados com base nesta resposta e está funcionando perfeitamente. Então eu queria configurar outro para notificar sobre impasses e vejo uma CREATE ROUTE
declaração:
-- create the route for the service
CREATE ROUTE DeadLockNotificationsRoute
WITH SERVICE_NAME = 'DeadLockNotificationsService',
ADDRESS = 'LOCAL';
GO
Mas no anterior eu não executei esta etapa, não foi incluída e funciona. Olhando em vários lugares aqui , aqui , aqui , aqui e alguns outros lugares, vejo que a etapa de criação de rota nem sempre está incluída. Para roteamento dinâmico parece obrigatório, é claro. A leitura na rota MSDN-Create não está clara para mim se é obrigatória ou não e quando deve ser incluída.
Se você estiver usando alertas de eventos WMI para eventos do servidor, o agente de serviços não será necessário , pois ele usa o Service Broker e
SQL/Notifications/ProcessWMIEventProviderNotification/v1.0
omsdb
Service Broker é habilitado por padrão para msdb para 2005 e superior.Leia sobre - entendendo o provedor WMI para eventos de servidor
Para responder às suas perguntas:
É sua escolha usar o Service Broker ou os provedores WMI para eventos do servidor. Acho os Provedores WMI para eventos de servidor mais fáceis de implementar.
Basicamente, o uso de notificações de eventos permite capturar informações usando o SQL Server Service Broker , criando um serviço e uma fila para os eventos . Por exemplo , se você configurar a notificação de evento para capturar DEADLOCK GRAPH, serão criados 3 objetos do agente de serviço:
Uma QUEUE para armazenar mensagens de evento DEADLOCK_GRAPH
Um SERVIÇO para encaminhar as mensagens para a fila e
Uma NOTIFICAÇÃO de Evento para capturar o grafo de deadlock e empacotá-lo em uma mensagem que é enviada ao Serviço.
Para provedores WMI para eventos de servidor - Qualquer evento que pode ser capturado por meio de notificações de eventos tem um objeto de evento WMI correspondente e qualquer aplicativo de gerenciamento WMI pode assinar esses objetos de evento. O SQL Server Agent foi atualizado para gerenciar eventos WMI , por meio do uso de WMI Query Language (WQL), uma linguagem de consulta semelhante ao T-SQL que é usada com WMI e Agent Alerts para eventos WMI.
Sim, mas não é de forma alguma uma substituição do Service Broker. A notificação de evento usa o Service Broker. O Provedor WMI para eventos de servidor usa objetos de evento WMI.
O WMI só pode lidar com esses grupos de eventos DDL . O Service Broker é muito mais amplo.
Para monitorar e alertar em Deadlocks, você pode usar meu script .
Consulte: Excelente artigo de Jonathan sobre como lidar com deadlocks no SQL Server