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:
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.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.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.
Ermitteln von Änderungen mit "SqlDependency" Zeigt, wie Sie ermitteln, ob Abfrageergebnisse von den ursprünglich empfangenen Ergebnissen abweichen.
SqlCommand-Ausführung mit einer SqlNotificationRequest Veranschaulicht das Konfigurieren eines SqlCommand-Objekts für die Arbeit 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.