Partilhar via


Implementar notificações de eventos

Aplica-se a:SQL Server

Para implementar uma notificação de evento, você deve primeiro criar um serviço de destino para receber notificações de evento e, em seguida, criar a notificação de evento.

Importante

A segurança da caixa de diálogo do Service Broker deve ser configurada para notificações de eventos que enviam mensagens para um agente de serviços em um servidor remoto. A segurança do diálogo deve ser configurada manualmente de acordo com o modelo de segurança completo.

Criação do serviço de destino

Não é necessário criar um serviço de iniciação do Service Broker porque o Service Broker inclui o seguinte tipo de mensagem e contrato específicos para notificações de eventos:

https://schemas.microsoft.com/SQL/Notifications/PostEventNotification  

O serviço de destino que recebe notificações de eventos deve honrar este contrato preexistente.

Para criar um serviço de destino:

  1. Crie uma fila para receber mensagens.

    Observação

    A fila recebe o seguinte tipo de mensagem: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Crie um serviço na fila que faça referência ao contrato de notificações de eventos.

  3. Crie uma rota no serviço para definir o endereço para o qual o Service Broker envia mensagens para o serviço. Para notificações de eventos destinadas a um serviço no mesmo banco de dados, especifique ADDRESS = 'LOCAL'.

    Observação

    O roteamento do Service Broker determina o serviço que recebe as mensagens de notificação. Se a notificação de evento tiver como alvo um serviço em um servidor remoto, tanto o servidor de origem quanto o servidor de destino deverão ter rotas definidas neles para garantir que a comunicação bidirecional ocorra.

O exemplo a seguir cria uma fila, um serviço na fila e uma rota no serviço para gerir mensagens do contrato de notificação de evento.

CREATE QUEUE NotifyQueue ;  
GO  
CREATE SERVICE NotifyService  
ON QUEUE NotifyQueue  
(  
[http://schemas.microsoft.com/SQL/Notifications/PostEventNotification]  
);  
GO  
CREATE ROUTE NotifyRoute  
WITH SERVICE_NAME = 'NotifyService',  
ADDRESS = 'LOCAL';  
GO  

Criando a notificação de evento

As notificações de eventos são criadas usando a instrução Transact-SQL CREATE EVENT NOTIFICATION e são descartadas usando a instrução DROP EVENT NOTIFICATION. Para modificar uma notificação de evento, você deve descartar e recriar a notificação de evento.

O exemplo a seguir cria a notificação de evento CreateDatabaseNotification. Esta notificação envia uma mensagem sobre qualquer evento CREATE_DATABASE que ocorra no servidor para o serviço de NotifyService que foi criado anteriormente.

CREATE EVENT NOTIFICATION CreateDatabaseNotification  
ON SERVER  
FOR CREATE_DATABASE  
TO SERVICE 'NotifyService', '8140a771-3c4b-4479-8ac0-81008ab17984' ;  

Atenção

As notificações de eventos reconhecem eventos CREATE_SCHEMA e as definições <schema_element> das instruções CREATE SCHEMA como eventos separados. Por exemplo, uma notificação de evento é criada nos eventos CREATE_SCHEMA e CREATE_TABLE e você executa o lote a seguir.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

Nesse caso, a notificação de evento é acionada duas vezes: uma vez quando o evento CREATE_SCHEMA ocorre e novamente quando o evento CREATE_TABLE ocorre. Recomendamos que você evite criar notificações de eventos nos eventos CREATE_SCHEMA e nos textos <schema_element> de quaisquer definições CREATE SCHEMA correspondentes ou crie lógica em seu aplicativo para evitar a captura de dados de eventos indesejados.

Para criar uma notificação de evento

Para descartar uma notificação de evento

Ver também

Obter Informações Sobre Notificações de Eventos
EVENTDATA (Transact-SQL)