Verwenden von Abfragebenachrichtigungen

SQL Server 2005 führte Abfragebenachrichtigungen ein. Dabei handelt es sich um neue Funktionen, mithilfe derer eine Anwendung eine Benachrichtigung von SQL Server anfordern kann, wenn sich die Ergebnisse einer Abfrage ändern. Abfragebenachrichtigungen ermöglichen Programmierern das Entwerfen von Anwendungen, die die Datenbank nur abfragen, wenn Änderungen an den Informationen vorliegen, die die Anwendung zuvor abgerufen hat.

Eine Onlinekataloganwendung kann z. B. die Ergebnisse einer Abfrage zwischenspeichern, die die Artikel eines Sonderangebots auflistet. Die Anwendung stellt den Katalog basierend auf den zwischengespeicherten Daten dar. Wenn sich die Liste der Sonderangebotsartikel ändert, empfängt ein Ereignishandler in der Anwendung das Benachrichtigungsereignis und verwirft die zwischengespeicherten Daten. Bei der nächsten Anforderung der Liste der Sonderangebotsartikel durch einen Kunden fragt die Anwendung die Datenbank nach den aktuellen Daten ab und erneuert das Abfragebenachrichtigungsabonnement.

Anwendungen können Abfragebenachrichtigungen nutzen, um Roundtrips zur Datenbank zu verringern. Entwickler können nun Anwendungen entwerfen, die automatisch benachrichtigt werden, wenn die Ergebnisse einer Abfrage möglicherweise veraltet sind, statt Code zu schreiben, der eine Abfrage regelmäßig erneut ausführt, um aktuelle Ergebnisse zu verwalten. Wenn Abfragebenachrichtigungen verwendet werden, gibt die Anwendung einen Befehl aus, der eine Abfrage und eine Benachrichtigungsanforderung enthält. Die Anwendung speichert die Ergebnisse der Abfrage oder den dynamischen Inhalt, der aus den Abfrageergebnissen generiert wurde, zwischen. Wenn die Anwendung die Abfragebenachrichtigung empfängt, löscht sie den zwischengespeicherten Inhalt. Anschließend gibt die Anwendung die Abfrage und die Benachrichtigungsanforderung erneut aus, wenn sie die aktualisierten Abfrageergebnisse benötigt.

Database Engine (Datenbankmodul) verwendet Abfragebenachrichtigungsabonnements zum Nachverfolgen von Anforderungen für Abfragebenachrichtigungen. Wenn ein Befehl eine Benachrichtigungsanforderung enthält, registriert die Datenbank die Anforderung als Abfragebenachrichtigungsabonnement und führt den Befehl dann aus.

Database Engine (Datenbankmodul) verwendet Service Broker zum Übermitteln von Benachrichtigungsmeldungen. Daher muss Service Broker in der Datenbank aktiv sein, in der die Anwendung das Abonnement anfordert. Die Abfragebenachrichtigungsfunktion erfordert und verwendet Notification Services nicht. Abfragebenachrichtigungen sind von Ereignisbenachrichtigungen unabhängig.

Um eine Benachrichtigungsnachricht in einer Datenbank zu empfangen, bei der es sich nicht um die Datenbank handelt, die das Abonnement enthält, muss für die Datenbank, die das Abonnement enthält, die TRUSTWORTHY-Eigenschaft auf ON festgelegt werden. Weitere Informationen finden Sie unter ALTER DATABASE (Transact-SQL).