Compartir a través de


Obtener notificaciones

Muchas aplicaciones no necesitan incluir código para recibir o procesar notificaciones de consulta. Cuando la suscripción de notificación se administra por medio de un objeto SqlDependency, éste supervisa automáticamente la suscripción. Cuando se recibe un mensaje de notificación, el objeto SqlDependency llama al controlador de eventos registrado en el objeto SqlDependency. Con este método, no es necesario tomar ninguna medida especial para recibir la notificación. Una aplicación que utilice SqlDependency no necesita recibir ni procesar mensajes de notificación.

Por el contrario, si la aplicación utiliza una solicitud de notificación, esta aplicación debe supervisar la cola y reaccionar ante el mensaje de notificación. En este caso, debe escribir una aplicación que procese mensajes para el servicio que recibe las notificaciones. La aplicación que solicita la notificación puede ser la misma que procesa el mensaje. También puede escribir otra aplicación para que reciba y responda al mensaje de notificación de consulta.

SQL Server realiza un seguimiento de las suscripciones de notificación utilizando una combinación del identificador de notificación y la consulta enviada. Si una aplicación solicita una notificación para dos consultas diferentes con el mismo identificador de notificación, SQL Server creará dos suscripciones con el mismo identificador de notificación. No obstante, si la aplicación solicita una notificación para una misma consulta con el mismo identificador de notificación dos veces, SQL Server creará una única suscripción con el tiempo de espera especificado en la segunda solicitud.

Las aplicaciones que se ejecutan en la base de datos suelen ser procedimientos almacenados que la cola activa cuando llega un mensaje. Estos procedimientos almacenados pueden escribirse en Transact-SQL o en uno de los lenguajes .NET. Otros métodos menos frecuentes incluyen ejecutar la aplicación como un trabajo programado o utilizar una tarea de inicio para ejecutar un procedimiento almacenado permanentemente en segundo plano.

Las aplicaciones que se ejecutan fuera de la base de datos suelen utilizar uno de los métodos siguientes para recibir mensajes:

  • La aplicación puede sondear la cola periódicamente para ver si ha llegado algún mensaje.
  • La aplicación puede utilizar la cláusula WAITFOR de la instrucción RECEIVE para bloquear la ejecución de un lote o un procedimiento almacenado en una instrucción RECEIVE hasta que la instrucción devuelva al menos una fila.
  • La aplicación puede crear una notificación de eventos para el evento QUEUE_ACTIVATION en la cola que recibe la notificación. Seguidamente, la aplicación puede supervisar el servicio que recibe el evento de activación mediante una de las dos estrategias anteriores.

Otros métodos menos comunes incluyen supervisar la activación de cola mediante WMI o escribir un procedimiento almacenado CLR (Common Language Runtime) que realice alguna acción externa como respuesta a un mensaje.

Dado que los cuadros de diálogo de notificación de consulta siempre contienen un mensaje de notificación individual, una aplicación que procese notificaciones de consulta debe finalizar la conversación tras recibir un mensaje. De lo contrario, el cuadro de diálogo acabará por exceder el tiempo de espera. Cuando un cuadro de diálogo de notificación de consulta excede el tiempo de espera, SQL Server registra el error de tiempo de espera en el registro de errores de SQL Server.

Para obtener más información acerca de cómo escribir una aplicación que utilice Service Broker, vea Introduction to Service Broker Programming. Para obtener más información acerca de cómo iniciar una aplicación que utilice Service Broker, vea Choosing a Startup Strategy.

Vea también

Conceptos

Conceptos básicos de las notificaciones de eventos

Otros recursos

RECEIVE (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005