Lektion 11: Übermitteln von Ereignissen an die Weather-Anwendung

In diesem Schritt verwenden Sie ein Transact-SQL-Skript, um Ereignisse an die Weather-Anwendung zu übermitteln, und zeigen dann die entsprechenden Benachrichtigungen an.

Ereignisdaten

Ereignisse sind Daten, die von Ihrer Benachrichtigungsanwendung zum Generieren von Benachrichtigungen verwendet werden. Mithilfe der von Ihnen geschriebenen Benachrichtigungsgenerierungsabfragen werden Ereignisdaten und Abonnementdaten verknüpft, um Benachrichtigungen zu produzieren, wie in der Abfrage in Lektion 5.

Die Abfragen, von denen Benachrichtigungen generiert werden, werden während jedes Generatorquantums abgegeben, das über Daten zum Verarbeiten verfügt. Ereignisregeln werden in jedem Quantum ausgeführt, in dem mindestens ein Ereignisbatch empfangen wird. Geplante Regeln werden in jedem Quantum ausgeführt, in dem geplante Abonnements verarbeitet werden sollen.

Wenn keine Ereignisdaten vorhanden sind, gibt es keinen Anlass zum Ausführen von Regeln. Daher werden keine Benachrichtigungen produziert.

WeatherData-Ereignisse

Für diese Anwendung übermitteln Sie einen Batch von Ereignissen mithilfe der gespeicherten Ereignisübermittlungsprozeduren. Zuerst verwenden Sie die gespeicherte Prozedur NSEventBeginBatchWeatherData zum Öffnen eines Ereignisbatches. Sie geben den nicht gehosteten Ereignisanbieter WeatherSPEventProvider als den Ereignisanbieter an, den Sie in Lektion 6 definiert haben.

ms170427.Caution(de-de,SQL.90).gifVorsicht:
Führen Sie diese Anweisungen nicht einzeln aus. Von ihnen wird ein Ereignisbatch geöffnet und geschlossen. Sie müssen in derselben Transaktion ausgeführt werden. Um diese Abfragen auszuführen, führen Sie das AddWeatherEvents.sql-Skript wie später in dieser Lektion dokumentiert aus.
-- Use the weather application's database.
USE TutorialWeather;
-- Start an event batch.
DECLARE @BatchID bigint;
EXEC dbo.NSEventBeginBatchWeatherData N'WeatherSPEventProvider', @BatchID OUTPUT;

Nach dem Erstellen des Ereignisbatches verwenden Sie die gespeicherte Prozedur NSEventWriteWeatherData, um drei Weather-Ereignisse hinzuzufügen. Sie müssen die Ereignisbatch-ID und dann Werte für die Ereignisfelder zur Verfügung stellen. Dies ist ein Beispielereignis:

-- Submit events.
EXEC dbo.NSEventWriteWeatherData
    @EventBatchId=@BatchID,
    @City=N'Seattle',
    @Date=CONVERT(DATETIME, '2005-04-20 13:00:00', 120),
    @Low = 31,
    @High = 52,
    @Forecast=N'Sunny'

Nachdem Sie diese gespeicherte Prozedur zum Übermitteln von drei Ereignissen verwendet haben, verwenden Sie NSEventFlushBatchWeatherData, um den Ereignisbatch zu schließen und ihn an die Anwendungsdatenbank zu übermitteln.

-- Flush event batch.
EXEC dbo.NSEventFlushBatchWeatherData @BatchID;

Sie können die Ereignisbatch-ID anzeigen, sodass Sie Sichten und gespeicherte Prozeduren zum Anzeigen von Informationen zum Ereignisbatch verwenden können.

-- Display event batch ID
SELECT @BatchID 'Event Batch';

Übermitteln von Ereignissen an die Weather-Anwendung

Verwenden Sie die AddWeatherEvents.sql-Abfrage, um der Weather-Anwendung Ereignisse hinzuzufügen.

So übermitteln Sie Ereignisse an die Weather-Anwendung

  1. Erweitern Sie im Projektmappen-Explorer Weather, erweitern Sie Queries, und öffnen Sie dann AddWeatherEvents.sql.

  2. Überprüfen Sie den Transact-SQL-Code.

  3. Drücken Sie F5, um die Abfrage auszuführen.

    Sie sollten zwei Resultsets erhalten. Vom ersten Resultset wird der EventCount-Wert 3 zurückgegeben. Vom zweiten Resultset wird die Ereignisbatch-ID 1 zurückgegeben.

Anzeigen von Ereignisdaten

Verwenden Sie die ViewWeatherEvents.sql-Abfrage, um die gerade von Ihnen hinzugefügten Ereignisse anzuzeigen.

So zeigen Sie Ereignisdaten an

  1. Öffnen Sie im Projektmappen-Explorer die Datei ViewWeatherEvents.sql.

  2. Überprüfen Sie den Transact-SQL-Code.

  3. Drücken Sie F5, um die Abfrage auszuführen.

Wenn Sie mehrere Ereignisbatches übermittelt haben, ändern Sie den EventBatchId-Parameter entsprechend.

Anzeigen von Benachrichtigungen

Nach ungefähr 30 Sekunden sollte von Notification Services eine FileNotifications.htm-Datei im Notifications-Ordner erstellt worden sein. Öffnen Sie diese Datei, um die Benachrichtigungsdaten anzuzeigen. Sie sollten drei Benachrichtigungen erhalten, die den folgenden ähneln:

  • Benachrichtigungs-ID: 1 Benachrichtigungsklassenname: WeatherNotifications Abonnenten-ID: stephanie Geräteadresse: stephanie@adventure-works.com Protokollfelder: Textkörper: Weather report for the city of Seattle [2/21/2005 2:01:00 PM]: Sunny
    Expected low temperature : 31 F.
    Expected high temperature: 52 F.
    Weitere Informationen finden Sie auf unserer Website http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
    Thank you for using SQL Server Notification Services.
  • Benachrichtigungs-ID: 2 Benachrichtigungsklassenname: WeatherNotifications-Abonnenten-ID: david Geräteadresse: david@adventure-works.com Protokollfelder: Textkörper: Weather report for the city of Orlando [2/22/2005 2:01:00 AM]: Partly Cloudy
    Expected low temperature : 59 F.
    Expected high temperature: 81 F.
    Weitere Informationen finden Sie auf unserer Website http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Orlando
    Thank you for using SQL Server Notification Services.
  • Benachrichtigungs-ID: 3 Benachrichtigungsklassenname: WeatherNotifications Abonnenten-ID: richard Geräteadresse: richard@adventure-works.com Protokollfelder: Textkörper: Weather report for the city of Seattle [2/21/2005 2:01:00 PM]: Sunny
    Expected low temperature : 31 F.
    Expected high temperature: 52 F.
    Weitere Informationen finden Sie auf unserer Website http://www.msnbc.com/news/wea\_front.asp?ta=y\&tab=BW\&tp=\&czstr=Seattle
    Thank you for using SQL Server Notification Services.

Weil Sie das systemeigene File-Übermittlungsprotokoll verwenden, befinden sich alle drei von den Ereignissen generierten Benachrichtigungen in einer Datei. Wenn Sie mehr Ereignisse übermitteln, werden die zusätzlichen Benachrichtigungen an diese Datei angefügt.

Beachten Sie auch, dass für jede Benachrichtigung ein Header vorhanden ist. Darin werden Informationen zur Benachrichtigung einschließlich der Abonnenten-ID und der Geräteadresse angezeigt. Der eigentliche Text der Benachrichtigung beginnt nach "Textkörper:".

Problembehandlung

Wenn die Datei FileNotifications.htm nicht innerhalb von einer Minute im Notifications-Ordner angezeigt wird, suchen Sie im Anwendungsprotokoll in der Windows-Ereignisanzeige nach Ereignissen von Notification Services. Möglicherweise verfügt der Windows-Dienst nicht über Schreibberechtigungen für den Notifications-Ordner.

Sie können Informationen zu allen für die WeatherNotifications-Benachrichtigungsklasse generierten Benachrichtigungen anzeigen, indem Sie die ViewNotifications.sql-Abfrage ausführen.

So zeigen Sie Benachrichtigungsinformationen an

  1. Erweitern Sie im Projektmappen-Explorer Weather, erweitern Sie Queries, und doppelklicken Sie dann auf ViewNotifications.sql.

  2. Drücken Sie F5, um die Abfrage auszuführen.

    Suchen Sie in der DeliveryStatusDescription-Spalte nach Informationen zur Benachrichtigungsübermittlung. Bei Fehlern sollten im Anwendungsprotokoll zusätzliche Informationen verfügbar sein.

  3. Schließen Sie ViewSubscribersAndDevices.sql.

Wie geht es weiter?

In diesem Lernprogramm wurde Ihnen gezeigt, wie ein einfacher Prototyp für eine Notification Services-Anwendung erstellt wird. Verwenden Sie die folgenden Ressourcen, um Notification Services weiter kennen zu lernen:

Siehe auch

Konzepte

Notification Services-Lernprogramm

Andere Ressourcen

Erstellen von Benachrichtigungslösungen
Einführung in SQL Server Notification Services

Hilfe und Informationen

Informationsquellen für SQL Server 2005