Share via


Implementar notificações de evento

Para implementar uma notificação de evento, antes é necessário criar um serviço de destino para receber as notificações de evento e só então a notificação.

Observação importanteImportante

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

Criando o serviço de destino

Não é necessário criar um serviço que inicie o Service Broker, pois o Service Broker inclui o tipo de mensagem específica e o contrato de notificação de evento a seguir:

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

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

Para criar um serviço de destino:

  1. Crie uma fila para receber mensagens.

    ObservaçãoObservação

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

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

  3. Crie uma rota no serviço para definir o endereço para o qual o Service Broker deve enviar mensagens para o serviço. Para notificações de evento que visem um serviço no mesmo banco de dados, especifique ADDRESS = 'LOCAL'.

    ObservaçãoObservação

    O roteamento do Service Broker determina o serviço que recebe as mensagens de notificação. Se a notificação de evento visar um serviço em um servidor remoto, tanto o servidor de origem, quanto o servidor de destino devem ter rotas definidas neles mesmos a fim de garantir a comunicação nas duas direções.

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

CREATE QUEUE NotifyQueue ;
GO
CREATE SERVICE NotifyService
ON QUEUE NotifyQueue
(
[https://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 evento são criadas por meio da instrução Transact-SQL CREATE EVENT NOTIFICATION e descartadas pela 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. Essa notificação envia uma mensagem sobre quaisquer eventos CREATE_DATABASE que ocorrerem no servidor para o serviço NotifyService criado previamente.

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

Notificações de evento reconhecem eventos CREATE_SCHEMA e definições <schema_element> de instruções CREATE SCHEMA como eventos separados. Por exemplo, suponha que seja criada uma notificação de evento nos eventos CREATE_SCHEMA e CREATE_TABLE e você execute o lote a seguir.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

Nesse caso, a notificação de evento é emitida duas vezes: uma, quando ocorre o evento CREATE_SCHEMA e, outra vez, quando ocorre o evento CREATE_TABLE. Recomendamos evitar criar notificações de evento ao mesmo tempo em eventos CREATE_SCHEMA e em textos <schema_element> de quaisquer definições CREATE SCHEMA correspondentes ou criar lógica em seu aplicativo para evitar capturar dados de eventos indesejados.

Para criar uma notificação de evento

Para descartar uma notificação de evento

Consulte também

Referência

EVENTDATA (Transact-SQL)

Conceitos

Obter informações sobre notificações de eventos