Abfragebenachrichtigungen in SQL Server

Mit Abfragebenachrichtigungen, die auf der Service Broker-Infrastruktur aufsetzen, können Anwendungen benachrichtigt werden, wenn sich Daten geändert haben. Diese Funktion ist besonders nützlich für Anwendungen, die einen Informationscache aus einer Datenbank zur Verfügung stellen, z. B. eine Webanwendung, und die benachrichtigt werden müssen, wenn die Quelldaten geändert wurden.

Es gibt drei Möglichkeiten, Abfragebenachrichtigungen mithilfe von ADO.NET zu implementieren:

  1. Eine einfache Implementierung wird durch die SqlNotificationRequest- zur Verfügung gestellt, die serverseitige Funktionalität verfügbar macht und Ihnen ermöglicht, einen Befehl mit einer Benachrichtigungsanforderung auszuführen.

  2. Eine komplexere Implementierung wird von der SqlDependency-Klasse bereitgestellt, die eine komplexere Abstraktion der Benachrichtigungsfunktionalität zwischen der Quellanwendung und SQL Server bietet und Ihnen ermöglicht, eine Abhängigkeit zur Erkennung von Änderungen im Server zu nutzen. 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.

  3. Außerdem können Webanwendungen, die mithilfe von ASP.NET 2.0 oder höher erstellt wurden, die SqlCacheDependency-Hilfsklassen verwenden.

Abfragebenachrichtigungen sind für Anwendungen sinnvoll, die Anzeigen oder Caches als Reaktion auf Änderungen in den zugrunde liegenden Daten aktualisieren müssen. 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. Auf dem Server generierte Benachrichtigungen werden durch Warteschlangen gesendet, um später verarbeitet zu werden.

Sie können Benachrichtigungen für SELECT- und EXECUTE-Anweisungen einrichten. Wenn eine EXECUTE-Anweisung verwendet wird, registriert SQL Server eine Benachrichtigung für den ausgeführten Befehl anstelle der EXECUTE-Anweisung selbst. Der Befehl muss den Anforderungen und Einschränkungen für eine SELECT-Anweisung genügen. Wenn ein Befehl, der eine Benachrichtigung registriert, mehrere Anweisungen enthält, erstellt die Datenbank-Engine eine Benachrichtigung für jede Anweisung im Batch.

Wenn Sie eine Anwendung entwickeln, in der Sie bei Datenänderungen zuverlässige Benachrichtigungen in nahezu Echtzeit (unter einer Sekunde) benötigen, lesen Sie die Abschnitte Planen einer effizienten Abfragebenachrichtigungs-Strategie und Alternativen zu Abfragebenachrichtigungen im Artikel Planen von Benachrichtigungen. Weitere Informationen zu Abfragebenachrichtigungen und SQL Server Service Broker finden Sie unter den folgenden Links zu Artikeln in der SQL Server-Dokumentation.

SQL Server-Dokumentation

In diesem Abschnitt

Aktivieren von Abfragebenachrichtigungen
Erläutert die Verwendung von Abfragebenachrichtigungen, einschließlich der Anforderungen zu deren Aktivierung und Nutzung.

SqlDependency in einer ASP.NET-Anwendung
Zeigt, wie Sie Abfragebenachrichtigungen in einer ASP.NET-Anwendung verwenden können.

Ermitteln von Änderungen mit SqlDependency
Zeigt, wie Sie ermitteln, ob Abfrageergebnisse von den ursprünglich empfangenen Ergebnissen abweichen.

SqlCommand-Ausführung mit SqlNotificationRequest
Veranschaulicht das Konfigurieren eines SqlCommand-Objekts für dar Arbeiten mit einer Abfragebenachrichtigung.

Verweis

SqlNotificationRequest
Beschreibt die SqlNotificationRequest-Klasse und alle ihre Member.

SqlDependency
Beschreibt die SqlDependency-Klasse und alle ihre Member.

SqlCacheDependency
Beschreibt die SqlCacheDependency-Klasse und alle ihre Member.

Weitere Informationen