Sprache
Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um eine Benachrichtigung zu erhalten, wenn sich Abfrageergebnisse ändern, konfigurieren Sie SqlCommand mit einer Benachrichtigungsanforderung. Verwenden Sie Benachrichtigungsanforderungen für benutzerdefinierte Serverwarteschlangen oder wenn Sie keine Liveabhängigkeitsobjekte verwalten möchten.
Erstellen der Benachrichtigungsanforderung
Erstellen Sie das SqlNotificationRequest-Objekt, und weisen Sie es vor der Ausführung der Notification-Eigenschaft des Befehls zu. Nachdem der Server die Anforderung registriert hat, müssen Sie das Anforderungsobjekt nicht beibehalten. Fragen Sie die Warteschlange nach Benachrichtigungen ab, wenn es Ihre Anwendung erfordert. Benachrichtigungen können eingehen, während die Anwendung beendet ist, und nach dem Neustart verfügbar bleiben.
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 zu überwachen und auf den Inhalt der Nachricht zu reagieren.
Hinweis
Wenn Sie SQL Server-Benachrichtigungsanforderungen mit SqlDependency verwenden, erstellen Sie einen eigenen Warteschlangennamen, anstatt den Standarddienstnamen zu verwenden.
Erteilen Sie Benutzern die Serverberechtigungen, die zum Anfordern von Benachrichtigungen erforderlich sind. Die SqlNotificationRequest Klasse fügt keine clientseitigen Sicherheitsanforderungen hinzu.
Beispiel
Das folgende Fragment erstellt das SqlNotificationRequest Objekt und ordnet es dem SqlCommand. Installieren Sie das Microsoft.Data.SqlClient-NuGet-Paket und importieren Sie Microsoft.Data.Sql und Microsoft.Data.SqlClient. Der Options Wert benennt einen Service Broker-Dienst und die Datenbank, in der er gehostet wird, nicht die Warteschlange selbst. Erstellen Sie den Dienst und die Warteschlange, wie unter Aktivieren von Abfragebenachrichtigungen beschrieben.
' 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.UserData = "NotificationID"
notificationRequest.Options = "service=ContactChangeNotifications;local database=AdventureWorks"
' 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.UserData = "NotificationID";
notificationRequest.Options = "service=ContactChangeNotifications;local database=AdventureWorks";
// 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.