Abfragebenachrichtigungen in SQL ServerQuery Notifications in SQL Server

Mit Abfragebenachrichtigungen, die auf der Service Broker-Infrastruktur aufsetzen, können Anwendungen benachrichtigt werden, wenn sich Daten geändert haben.Built upon the Service Broker infrastructure, query notifications allow applications to be notified when data has changed. Diese Funktion ist besonders nützlich bei Anwendungen, die Informationen aus einer Datenbank zwischenspeichern, z. B. aus einer Webanwendung, und bei Änderungen von Quelldaten benachrichtigt werden müssen.This feature is particularly useful for applications that provide a cache of information from a database, such as a Web application, and need to be notified when the source data is changed.

Mithilfe von ADO.NET können Abfragebenachrichtigungen auf dreierlei Weise implementiert werden:There are three ways you can implement query notifications using ADO.NET:

  1. Die konkrete Implementierung wird von der SqlNotificationRequest-Klasse bereitgestellt, die serverseitige Funktionen verfügbar macht und das Ausführen von Befehlen mit einer Benachrichtigungsanforderung ermöglicht.The low-level implementation is provided by the SqlNotificationRequest class that exposes server-side functionality, enabling you to execute a command with a notification request.

  2. Für die übergeordnete Implementierung ist die SqlDependency-Klasse zuständig. Diese Klasse stellt eine allgemeine Abstraktion der Benachrichtigungsfunktionalität zwischen der Quellanwendung und SQL Server bereit, die die Verwendung einer Abhängigkeit ermöglicht, um Änderungen im Server zu erkennen.The high-level implementation is provided by the SqlDependency class, which is a class that provides a high-level abstraction of notification functionality between the source application and SQL Server, enabling you to use a dependency to detect changes in the server. In den meisten Fällen ist dies die einfachste und effektivste Art, die SQL Server-Benachrichtigungsfunktionen verwalteter Clientanwendungen mithilfe des .NET Framework-Datenanbieters für SQL Server wirkungsvoll zu nutzen.In most cases, this is the simplest and most effective way to leverage SQL Server notifications capability by managed client applications using the .NET Framework Data Provider for SQL Server.

  3. Außerdem können Webanwendungen, die mithilfe von ASP.NET 2.0 oder höher erstellt wurden, die SqlCacheDependency-Hilfsklassen verwenden.In addition, Web applications built using ASP.NET 2.0 or later can use the SqlCacheDependency helper classes.

Abfragebenachrichtigungen werden für Anwendungen verwendet, die Anzeigen oder Zwischenspeicherungen als Antwort auf Änderungen in den zugrunde liegenden Daten aktualisieren müssen.Query notifications are used for applications that need to refresh displays or caches in response to changes in underlying data. Microsoft SQL Server ermöglicht es .NET Framework-Anwendungen, einen Befehl an SQL Server zu senden und eine Benachrichtigung anzufordern, sobald bei der Ausführung desselben Befehls Resultsets erstellt werden, die sich von den ursprünglich abgerufenen unterscheiden.Microsoft SQL Server allows .NET Framework applications to send a command to SQL Server and request notification if executing the same command would produce result sets different from those initially retrieved. Auf dem Server generierte Benachrichtigungen werden durch Warteschlangen gesendet, um später verarbeitet zu werden.Notifications generated at the server are sent through queues to be processed later.

Benachrichtigungen können für SELECT- und für EXECUTE-Anweisungen eingerichtet werden.You can set up notifications for SELECT and EXECUTE statements. Bei Verwendung einer EXECUTE-Anweisung registriert SQL Server eine Benachrichtigung für den ausgeführten Befehl und nicht für die EXECUTE-Anweisung selbst.When using an EXECUTE statement, SQL Server registers a notification for the command executed rather than the EXECUTE statement itself. Der Befehl muss den Anforderungen und Einschränkungen einer SELECT-Anweisung gerecht werden.The command must meet the requirements and limitations for a SELECT statement. Wenn ein Befehl, der eine Benachrichtigung registriert, mehr als eine Anweisung enthält, erstellt die Datenbank-Engine für jede Anweisung im Stapel eine Benachrichtigung.When a command that registers a notification contains more than one statement, the Database Engine creates a notification for each statement in the batch.

Wenn Sie eine Anwendung entwickeln, bei der Sie bei Datenänderungen zuverlässige untergeordnete Benachrichtigungen benötigen, lesen Sie die Abschnitte Planen einer effizienten Abfrage Benachrichtigungs Strategie und Alternativen zum Abfragen von Benachrichtigungen in der Planung für Benachrichtigungs Thema in SQL Server-Onlinedokumentation.If you are developing an application where you need reliable sub-second notifications when data changes, review the sections Planning an Efficient Query Notifications Strategy and Alternatives to Query Notifications in the Planning for Notifications topic in SQL Server Books Online. Weitere Informationen zu Abfragebenachrichtigungen und SQL Server Service Broker finden Sie unter den folgenden Links zu Themen in der SQL Server-Onlinedokumentation.For more information about Query Notifications and SQL Server Service Broker, see the following links to topics in SQL Server Books Online.

Dokumentation zu SQL ServerSQL Server documentation

In diesem AbschnittIn This Section

Aktivieren von AbfragebenachrichtigungenEnabling Query Notifications
Erläutert die Verwendung von Abfragebenachrichtigungen und informiert über die Anforderungen, die für deren Aktivierung und Verwendung erfüllt sein müssen.Discusses how to use query notifications, including the requirements for enabling and using them.

SqlDependency in einer ASP.NET-AnwendungSqlDependency in an ASP.NET Application
Zeigt, wie Sie Abfragebenachrichtigungen von einer ASP.NET-Anwendung aus verwenden können.Demonstrates how to use query notifications from an ASP.NET application.

Ermitteln von Änderungen mit SqlDependencyDetecting Changes with SqlDependency
Zeigt, wie Sie erkennen können, dass sich Abfrageergebnisse von den ursprünglich empfangenen Abfrageergebnissen unterscheiden.Demonstrates how to detect when query results will be different from those originally received.

SqlCommand-Ausführung mit SqlNotificationRequestSqlCommand Execution with a SqlNotificationRequest
Zeigt, wie ein SqlCommand-Objekt so konfiguriert werden kann, dass es mit einer Abfragebenachrichtigung arbeitet.Demonstrates configuring a SqlCommand object to work with a query notification.

ReferenzReference

SqlNotificationRequest
Beschreibt die SqlNotificationRequest-Klasse und alle Member dieser Klasse.Describes the SqlNotificationRequest class and all of its members.

SqlDependency
Beschreibt die SqlDependency-Klasse und alle Member dieser Klasse.Describes the SqlDependency class and all of its members.

SqlCacheDependency
Beschreibt die SqlCacheDependency-Klasse und alle Member dieser Klasse.Describes the SqlCacheDependency class and all of its members.

Siehe auchSee also