Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
Cree una cola para recibir mensajes.
Nota:
La cola recibe el siguiente tipo de mensaje:
https://schemas.microsoft.com/SQL/Notifications/QueryNotification
.Cree un servicio en la cola que haga referencia al contrato de notificaciones de eventos.
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 CreateDatabaseNotification
de 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)