Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
Crie uma fila para receber mensagens.
Observação
A fila recebe o seguinte tipo de mensagem:
http://schemas.microsoft.com/SQL/Notifications/QueryNotification.Crie um serviço na fila que faça referência ao contrato de notificações de eventos.
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 provenientes 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 através da instrução Transact-SQL CREATE EVENT NOTIFICATION e são removidas através da 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 os eventos CREATE_SCHEMA e as definições de <schema_element> de 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 ou evite criar notificações de eventos tanto nos eventos CREATE_SCHEMA como nos textos <schema_element> de quaisquer definições CREATE SCHEMA correspondentes, ou incorpore lógica na sua aplicação para evitar captar 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)