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.

Microsoft. Data.SqlClient stellt zwei Klassen für Abfragebenachrichtigungen bereit:

  • Verwenden Sie SqlNotificationRequest, um einen Befehl mit einer Benachrichtigungsanforderung auszuführen und die Service Broker-Nachrichten selbst zu verarbeiten.

  • Wird verwendet SqlDependency , um Änderungen über das OnChange Ereignis zu erkennen. Microsoft. Data.SqlClient verwaltet den Listener und macht Benachrichtigungsinformationen in den Ereignisargumenten verfügbar.

Important

Verwenden Sie System.Data.SqlClient nicht für neue Entwicklung. Verwenden Sie stattdessen Microsoft.Data.SqlClient. Die ASP.NET Framework-Klasse SqlCacheDependency erfordert System.Data.SqlClient und lässt sich nicht mit Microsoft.Data.SqlClient integrieren. Für neue Microsoft.Data.SqlClient-Anwendungen abonnieren Sie SqlDependency.OnChange und invalidieren Sie Einträge über die Cache-API Ihrer Anwendung.

Abfragebenachrichtigungen sind für Anwendungen sinnvoll, die Anzeigen oder Caches als Reaktion auf Änderungen in den zugrunde liegenden Daten aktualisieren müssen. SQL Server ermöglicht es .NET Anwendungen, einen Befehl zu senden und eine Benachrichtigung anzufordern, wenn derselbe Befehl Ergebnissätze erzeugen würde, 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. Bei Verwendung einer EXECUTE Anweisung registriert SQL Server eine Benachrichtigung für den ausgeführten Befehl und nicht für die EXECUTE Anweisung selbst. Der Befehl muss die Anforderungen und Einschränkungen für eine SELECT Anweisung erfüllen. 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, wie das SqlCommand Objekt für eine Abfragebenachrichtigung konfiguriert wird.

Verweis

SqlNotificationRequest Beschreibt die SqlNotificationRequest-Klasse und alle ihre Member.

SqlDependency Beschreibt die SqlDependency-Klasse und alle ihre Member.

SqlCacheDependencyBeschreibt die ASP.NET Framework-Cacheabhängigkeitsklasse für System.Data.SqlClient. Es bindet Microsoft.Data.SqlClient-Abhängigkeiten nicht ein.

Siehe auch