Freigeben über


'SqlCommand'-Ausführung mit einer 'SqlNotificationRequest' (ADO.NET)

Aktualisiert: November 2007

Ein SqlCommand-Objekt kann so konfiguriert werden, dass eine Benachrichtigung generiert wird, sobald zuvor vom Server abgerufene Daten geändert werden, wodurch die Ergebnisse einer erneuten Ausführung der Abfrage anders aussehen würden. Eine solche Konfiguration bietet sich für Szenarien an, in denen Sie benutzerdefinierte Benachrichtigungswarteschlangen auf dem Server verwenden oder keine aktiven Objekte verwalten möchten.

Erstellen der Benachrichtigungsanforderung

Sie können ein SqlNotificationRequest-Objekt verwenden, um die Benachrichtigungsanforderung zu erstellen, indem Sie es an ein SqlCommand-Objekt binden. Sobald die Anforderung erstellt ist, benötigen Sie das SqlNotificationRequest-Objekt nicht mehr. Sie können die Warteschlange dann nach Benachrichtigungen abfragen und auf diese entsprechend reagieren. Benachrichtigungen können auch dann ausgegeben werden, wenn die Anwendung geschlossen und anschließend wieder gestartet wird.

Wenn der Befehl mit der zugehörigen Benachrichtigung ausgeführt wird, lösen alle Änderungen im ursprünglichen Resultset das Senden einer Nachricht an die SQL Server-Warteschlange aus, die in der Benachrichtigungsanforderung konfiguriert wurde.

Wie Sie die SQL Server-Warteschlange abrufen können und die Meldung interpretieren müssen, hängt von Ihrer Anwendung ab. Die Anwendung ist dafür verantwortlich, die Warteschlange abzufragen und aufgrund der Meldung zu reagieren.

Hinweis:

Wenn Sie die SQL Server-Benachrichtigungsanforderungen mit SqlDependency verwenden, erstellen Sie einen eigenen Warteschlangennamen, statt den Standarddienstnamen zu verwenden.

Es gibt keine neuen clientseitigen Sicherheitselemente für SqlNotificationRequest. Dies ist vor allem ein Serverfeature, und der Server hat Sonderberechtigungen erstellt, die Benutzer für das Anfordern einer Benachrichtigung besitzen müssen.

Beispiel

Im folgenden Codefragment wird veranschaulicht, wie ein SqlNotificationRequest erstellt und einem SqlCommand zugeordnet wird.

' 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.

Siehe auch

Weitere Ressourcen

Abfragebenachrichtigungen in SQL Server (ADO.NET)