Compartir a través de


Implementar notificaciones de eventos

Para implementar una notificación de eventos, primero debe crear un servicio de destino para recibir notificaciones de eventos y, a continuación, crear la notificación de eventos.

Importante

La seguridad del cuadro de diálogo de Service Broker debe configurarse para las notificaciones de eventos que envían mensajes a un agente de servicio en un servidor remoto. La seguridad del cuadro de diálogo debe configurarse manualmente según el modelo de seguridad completo.

Creación del servicio de destino

No es necesario crear un servicio de inicio de Service Broker porque Service Broker incluye el siguiente tipo de mensaje específico y contrato para las notificaciones de eventos:

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

El servicio de destino que recibe notificaciones de eventos debe respetar este contrato preexistente.

Para crear un servicio de destino:

  1. Cree una cola para recibir mensajes.

    Nota:

    La cola recibe el siguiente tipo de mensaje: https://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Cree un servicio en la cola que haga referencia al contrato de notificaciones de eventos.

  3. Cree una ruta en el servicio para definir la dirección a la que Service Broker envía mensajes para el servicio. Para las notificaciones de eventos que tienen como destino un servicio en la misma base de datos, especifique ADDRESS = 'LOCAL'.

    Nota:

    El enrutamiento de Service Broker determina el servicio que recibe los mensajes de notificación. Si la notificación de eventos tiene como destino un servicio en un servidor remoto, tanto el servidor de origen como el servidor de destino deben tener rutas definidas en ellos para asegurarse de que se produce la comunicación bidireccional.

En el ejemplo siguiente se crea una cola, un servicio en la cola y una ruta en el servicio para gestionar los mensajes del contrato de notificación de eventos.

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  

Creación de la notificación de eventos

Las notificaciones de eventos se crean mediante la Transact-SQL instrucción CREATE EVENT NOTIFICATION y se quitan mediante drop EVENT NOTIFICATION STATEMENT. Para modificar una notificación de eventos, debe quitar y volver a crear la notificación de eventos.

En el ejemplo siguiente se crea la notificación CreateDatabaseNotificationde eventos . Esta notificación envía un mensaje sobre cualquier CREATE_DATABASE evento que se produzca en el servidor al NotifyService servicio que se creó anteriormente.

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

Precaución

Las notificaciones de eventos reconocen eventos CREATE_SCHEMA y las <definiciones de schema_element> de instrucciones CREATE SCHEMA como eventos independientes. Por ejemplo, se crea una notificación de eventos en los eventos CREATE_SCHEMA y CREATE_TABLE, y se ejecuta el siguiente lote.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

En este caso, la notificación de eventos se genera dos veces: una vez cuando se produce el evento CREATE_SCHEMA, y de nuevo cuando se produce el evento CREATE_TABLE. Se recomienda evitar crear notificaciones de eventos tanto en los eventos de CREATE_SCHEMA como en los <textos de schema_element> de las definiciones CREATE SCHEMA correspondientes, o bien crear lógica en la aplicación para evitar capturar datos de eventos no deseados.

Para crear una notificación de eventos

Para quitar una notificación de eventos

Véase también

Obtener información sobre las notificaciones de eventos
EVENTDATA (Transact-SQL)