Usar notificaciones de consulta

SQL Server 2005 presentó una nueva funcionalidad, las notificaciones de consulta, que permiten que una aplicación solicite una notificación a SQL Server cuando los resultados de una consulta cambian. Con las notificaciones de consulta, los programadores pueden diseñar aplicaciones que consulten la base de datos sólo cuando se produce un cambio en la información que la aplicación ha recuperado previamente.

Por ejemplo, una aplicación de catálogo en línea puede almacenar en caché los resultados de una consulta que enumera los artículos que se encuentran a la venta. La aplicación presenta el catálogo basándose en los datos almacenados en caché. Cuando se produce un cambio en la lista de artículos en venta, un controlador de eventos de la aplicación recibe el evento de notificación y descarta los datos almacenados en caché. La próxima vez que un cliente solicite la lista, la aplicación consultará los datos actuales en la base de datos y renovará la suscripción a notificación.

Las aplicaciones pueden aprovechar las notificaciones de consulta para reducir los viajes de ida y vuelta a la base de datos. En lugar de escribir código que vuelva a ejecutar una consulta periódicamente para mantener los resultados actualizados, los programadores pueden diseñar aplicaciones que reciban notificaciones automáticamente cuando exista la posibilidad de que los resultados de la consulta estén desactualizados. Con las notificaciones de consulta, la aplicación ejecuta un comando que contiene una consulta y una solicitud de notificación. La aplicación almacena en caché los resultados de la consulta o el contenido dinámico generado a partir de esos resultados. Cuando la aplicación recibe la notificación de consulta, borra el contenido de la caché. Después, volverá a ejecutar la consulta y la solicitud de notificación cuando necesite resultados actualizados.

El Motor de base de datos utiliza las suscripciones a notificaciones para hacer un seguimiento de las solicitudes de notificaciones de consulta. Cuando un comando contiene una solicitud de notificación, la base de datos registra la solicitud como una suscripción a notificación y, después, ejecuta el comando.

El Motor de base de datos se sirve de Service Broker para entregar los mensajes de notificación. Por tanto, es necesario que Service Broker esté activo en la base de datos donde la aplicación solicita la suscripción. La funcionalidad de notificación de consulta no requiere ni utiliza Notification Services. Las notificaciones de consulta son independientes de las notificaciones de eventos.

Para recibir un mensaje de notificación en una base de datos distinta de la que contiene la suscripción, la base de datos que contiene la suscripción debe tener la propiedad TRUSTWORTHY establecida en ON. Para obtener más información, vea ALTER DATABASE (Transact-SQL).