SqlCommand-Ausführung mit "SqlNotificationRequest"

Ein SqlCommand-Objekt kann so konfiguriert werden, dass eine Benachrichtigung generiert wird, wenn Daten geändert werden, nachdem sie vom Server abgerufen wurden, und wenn sich das Resultset bei einer erneuten Ausführung der Abfrage unterscheidet. Dies ist hilfreich für Szenarios, in denen Sie benutzerdefinierte Benachrichtigungswarteschlangen auf dem Server verwenden möchten, oder wenn Sie Liveobjekte nicht verwalten möchten.

Erstellen der Benachrichtigungsanforderung

Sie können ein SqlNotificationRequest-Objekt verwenden, um die Benachrichtigungsanforderung durch Bindung an ein SqlCommand-Objekt zu erstellen. Sobald die Anforderung erstellt wurde, benötigen Sie das SqlNotificationRequest-Objekt nicht mehr. Sie können die Warteschlange nach Benachrichtigungen abfragen und entsprechend reagieren. Benachrichtigungen können angezeigt werden, auch wenn die Anwendung selbst heruntergefahren und dann neu gestartet wurde.

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 SQL Server-Benachrichtigungsanforderungen mit SqlDependency verwenden, erstellen Sie einen eigenen Warteschlangennamen, anstatt den Standarddienstnamen zu verwenden.

Für SqlNotificationRequest gibt es keine neuen clientseitigen Sicherheitselemente. Es handelt sich primär um ein Serverfeature, und der Server hat spezielle Berechtigungen erstellt, die Benutzer haben müssen, um eine Benachrichtigung anzufordern.

Beispiel

Im folgenden Codefragment wird gezeigt, wie SqlNotificationRequest erstellt und mit SqlCommand verbunden 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 notificationRequest As New SqlNotificationRequest()
notificationRequest.id = "NotificationID"
notificationRequest.Service = "mySSBQueue"

' Associate the notification request with the command.
command.Notification = notificationRequest
' 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 notificationRequest=new SqlNotificationRequest();
notificationRequest.id="NotificationID";
notificationRequest.Service="mySSBQueue";

// Associate the notification request with the command.
command.Notification=notificationRequest;
// 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