Conceptos básicos de las notificaciones de eventos

Las notificaciones de eventos se ejecutan como respuesta a una variedad de instrucciones del lenguaje de definición de datos (DDL) Transact-SQL y eventos de Seguimiento SQL enviando información acerca de esos eventos a un servicio de Service Broker.

Las notificaciones de eventos se pueden usar para realizar lo siguiente:

  • Registrar y revisar cambios o actividades que se producen en la base de datos.

  • Realizar una acción en respuesta a un evento de una forma asincrónica en lugar de sincrónica.

Las notificaciones de eventos pueden ofrecer una alternativa de programación a los desencadenadores DDL y al Seguimiento SQL.

Las notificaciones de eventos se ejecutan asincrónicamente, fuera del alcance de una transacción. Por consiguiente, a diferencia de los desencadenadores DDL, las notificaciones de eventos se pueden usar dentro de una aplicación de bases de datos para responder a eventos sin utilizar los recursos definidos por la transacción inmediata. Para obtener más información, vea Comparación de las notificaciones de eventos con los desencadenadores.

A diferencia del Seguimiento SQL, las notificaciones de eventos se pueden utilizar para realizar una acción en una instancia de SQL Server como respuesta a un evento de Seguimiento SQL. Para obtener más información, vea Descripción de notificaciones de eventos frente a Traza de SQL.

Cuando se crea una notificación de eventos, se abren una o más conversaciones de Service Broker entre una instancia de SQL Server y el servicio de destino que se especifica. Normalmente, las conversaciones permanecen abiertas mientras existe la notificación de eventos como objeto de la instancia de servidores. En algunos casos de error, las conversaciones se pueden cerrar antes de que se quite la notificación de eventos. Esas conversaciones nunca se comparten entre notificaciones de eventos. Cada notificación de eventos tiene sus propias conversaciones exclusivas. Al finalizar una conversación explícitamente se impide que el servicio de destino reciba más mensajes y la conversación no se vuelve a abrir la próxima vez que se activa la notificación de eventos.

La información de eventos se proporciona a Service Broker como una variable de tipo xml que proporciona información acerca de cuándo se produce un evento, el objeto de la base de datos afectado, la instrucción de lote Transact-SQL implicada y otra información. Para obtener más información acerca del esquema XML producido por las notificaciones eventos, vea EVENTDATA (Transact-SQL).

Los datos de eventos pueden ser utilizados por aplicaciones que se ejecutan junto con SQL Server para realizar un seguimiento del progreso y tomar decisiones. Por ejemplo, la siguiente notificación de eventos envía un aviso a un servicio determinado cada vez que se emite una instrucción ALTER TABLE en la base de datos de ejemplo AdventureWorks2008R2:

USE AdventureWorks2008R2;
GO
CREATE EVENT NOTIFICATION NotifyALTER_T1
ON DATABASE
FOR ALTER_TABLE
TO SERVICE '//Adventure-Works.com/ArchiveService' ,
    '8140a771-3c4b-4479-8ac0-81008ab17984';

En Ejemplos de motor de base de datos de SQL Server, se proporciona un script de ejemplo de notificaciones de eventos que se puede ejecutar en la base de datos de ejemplo AdventureWorks2008R2, EventNotificationSample.sql.