Implementar notificaciones de eventos

Se aplica a:SQL Server

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

Importante

Service Broker se debe configurar para las notificaciones de eventos que envíen mensajes a un Service Broker en un servidor remoto. La seguridad del diálogo debe configurarse manualmente según el modelo de seguridad completa.

Crear el servicio de destino

No es necesario que cree un servicio de inicio de Service Brokerdebido a que Service Broker incluye el siguiente tipo de mensaje y contrato para 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: http://schemas.microsoft.com/SQL/Notifications/QueryNotification.

  2. Cree un servicio en la cola que hace 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 los mensajes de ese servicio. Para las notificaciones de eventos que tengan como destino un servicio en la misma base de datos, especifique ADDRESS = 'LOCAL'.

    Nota

    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 este servidor para garantizar que se produce comunicación en los dos sentidos.

En el ejemplo siguiente se crea una cola, un servicio en la cola y una ruta en el servicio para procesar los mensajes del contrato de notificaciones de eventos.

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  

Crear la notificación de eventos

Las notificaciones de eventos se crean mediante la instrucción TRANSACT-SQL CREATE EVENT NOTIFICATION y se quitan mediante la INSTRUCCIÓN DROP EVENT NOTIFICATION. Para modificar una notificación de eventos, debe quitarla y volver a crearla.

En el ejemplo siguiente se crea la notificación de eventos CreateDatabaseNotification. Esta notificación envía un mensaje acerca de cualquier evento CREATE_DATABASE que se produzca en el servidor en el servicio NotifyService 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, una notificación de eventos se crea en los dos eventos CREATE_SCHEMA y CREATE_TABLE, y se ejecuta el siguiente lote.

CREATE SCHEMA s

CREATE TABLE t1 (col1 int)

En este caso, el evento se notifica dos veces: una vez cuando se produce el evento CREATE_SCHEMA y otra vez cuando ocurre el evento CREATE_TABLE. Se recomienda evitar la creación de notificaciones de eventos en los eventos de CREATE_SCHEMA y los <textos de schema_element> de las definiciones CREATE SCHEMA correspondientes o 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

Consulte también

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