Compartir a través de


Ejecución de SqlCommand con una solicitud SqlNotification (ADO.NET)

Actualización: November 2007

Los objetos SqlCommand se pueden configurar para generar una notificación si, después de capturar datos del servidor, éstos generasen un conjunto de resultados diferente en caso de que se ejecutase de nuevo la consulta. Esto resulta útil si desea usar colas de notificaciones personalizadas en el servidor o si no desea mantener objetos activos.

Crear la petición de notificación

Puede utilizar un objeto SqlNotificationRequest para crear la petición de notificación mediante su enlace a un objeto SqlCommand. Después de crear la petición, ya no necesitará el objeto SqlNotificationRequest. Puede consultar las notificaciones en la cola y responder de forma adecuada. Las notificaciones se pueden producir incluso si la aplicación se apaga y posteriormente se reinicia.

Cuando se ejecuta el comando con las notificaciones asociadas, los cambios en el conjunto de resultados original desencadenan el envío de un mensaje a la cola de SQL Server configurada en la solicitud de notificación.

El modo en que se sondea la cola de SQL Server y se interpreta el mensaje es específico de la aplicación. La aplicación es responsable de sondear la cola y de reaccionar según el contenido del mensaje.

Nota:

Si utiliza peticiones de notificación de SQL Server con SqlDependency, cree su propio nombre de cola en lugar de usar el nombre del servicio predeterminado.

No existe ningún elemento de seguridad de cliente nuevo para SqlNotificationRequest. Se trata principalmente de una característica de servidor, que ha creado privilegios especiales que deben poseer los usuarios para solicitar una notificación.

Ejemplo

El siguiente fragmento de código demuestra cómo crear un objeto SqlNotificationRequest y asociarlo a SqlCommand.

' Assume connection is an open SqlConnection.
' Create a new SqlCommand object.
Dim command As New SqlCommand( _
  "SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection)

' Create a SqlNotificationRequest object.
Dim notficationRequest As New SqlNotificationRequest()
notficationRequest.id = "NotificationID"
notficationRequest.Service = "mySSBQueue"

' Associate the notification request with the command.
command.Notification = notficationRequest
' Execute the command.
command.ExecuteReader()
' Process the DataReader.
' You can use Transact-SQL syntax to periodically poll the 
' SQL Server queue to see if you have a new message.
// Assume connection is an open SqlConnection.
// Create a new SqlCommand object.
SqlCommand command=new SqlCommand(
 "SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers", connection);

// Create a SqlNotificationRequest object.
SqlNotificationRequest notficationRequest=new SqlNotificationRequest();
notficationRequest.id="NotificationID";
notficationRequest.Service="mySSBQueue";

// Associate the notification request with the command.
command.Notification=notficationRequest;
// Execute the command.
command.ExecuteReader();
// Process the DataReader.
// You can use Transact-SQL syntax to periodically poll the 
// SQL Server queue to see if you have a new message.

Vea también

Otros recursos

Notificaciones de consulta en SQL Server (ADO.NET)