Freigeben über


Beispiel: Verwenden eines Ereignisverlaufs für geplante Abonnements

Aktualisiert: 17. Juli 2006

Im folgenden Beispiel wird gezeigt, wie ein Ereignisverlauf mit einer Notification Services-Ereignisklasse verwendet wird, um Ereignisdaten für geplante Abonnements bereitzustellen. In diesem Beispiel benachrichtigt eine Anwendung zur Wettervorhersage Benutzer jeden Tag über die Vorhersage für ihren Bereich.

Szenario

Eine Notification Services-Anwendung sammelt Wettervorhersagedaten und sendet Wetterbenachrichtigungen an Abonnenten. In jedem Abonnement wird eine Stadt angegeben, für die Wetterinformationen und ein Zeitplan zum Erhalten von Benachrichtigungen gesammelt werden. Wenn die für ein Abonnement geplante Zeit erreicht wird, wird von der Anwendung die aktuelle Wettervorhersage für die Stadt an den Abonnenten gesendet.

Die Anwendung verfügt über einen Ereignisverlauf, in dem die aktuelle Wettervorhersage für alle größeren Städte gespeichert ist. In dieser Anwendung enthält jeder Ereignisbatch Vorhersagen für alle von der Anwendung unterstützten Städte. Bei Eintreffen eines Batches von Wettervorhersagen werden durch die Ereignisverlaufsregel alte Vorhersagen gelöscht und dem Ereignisverlauf neue Vorhersagen hinzugefügt.

Ereignisverlaufstabelle

Sie müssen die Ereignisverlaufstabelle in der Ereignisklasse definieren. Im Verlauf werden dieselben Spalten verwendet wie in der Ereignisklasse (City, Date, Low, High und Forecast).

IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'WeatherEventsChron'
        AND TABLE_SCHEMA = 'dbo')
    DROP TABLE dbo.WeatherEventsChron;
CREATE TABLE dbo.WeatherEventsChron
    (
    [City]nvarchar(35),
    [Date]datetime,
    [Low]float,
    [High]float,
    [Forecast]nvarchar(3500)
    PRIMARY KEY (City)
    );

Wenn Sie die Anwendung aktualisieren und Änderungen am Ereignisverlauf vorgenommen wurden, löscht Notification Services die aktuelle Tabelle und erstellt eine neue Tabelle. Weitere Informationen zu dieser Syntax finden Sie unter Definieren von Ereignisverlaufstabellen.

Ereignisverlaufsregel

In der Ereignisklasse definieren Sie auch eine Ereignisverlaufsregel, die jedes Mal ausgeführt wird, wenn ein Batch von Ereignissen eintrifft. Die folgende Regel löscht zuerst alle Daten aus dem Ereignisverlauf. Die Regel wählt dann den aktuellen Batch der Ereignisse aus der WeatherEvents-Sicht aus, in der die aktuellen Ereignisse für die Ereignisklasse enthalten sind, und fügt die Ereignisse dem Ereignisverlauf hinzu.

DELETE FROM dbo.WeatherEventsChron;
INSERT INTO dbo.WeatherEventsChron(City, Date, Low, High, Forecast)
SELECT e.City, e.Date, e.Low, e.High, e.Forecast
FROM dbo.WeatherEvents e;

Weitere Informationen finden Sie unter Definieren von Ereignisverlaufsregeln.

Geplante Regel, mit der Benachrichtigungen generiert werden

Die geplante Regel, mit der Benachrichtigungen generiert werden, verwendet den Ereignisverlauf als Ereignisquelle. Dadurch wird sichergestellt, dass geplante Abonnements über Ereignisdaten verfügen.

INSERT INTO dbo.WeatherNotifications(SubscriberId,
    DeviceName, SubscriberLocale,
    City, Date, Low, High, Forecast)
SELECT s.SubscriberId,
    s.DeviceName, s.SubscriberLocale,
    c.City, c.Date, c.Low, c.High, c.Forecast
FROM dbo.WeatherSubscriptions s JOIN dbo.WeatherEventsChron c
    ON s.City = c.City;

Ergebnisse

Um 8:00 Uhr kommt ein neuer Batch von Ereignissen mit den neuesten Wetterinformationen an. Die Ereignisverlaufsregel wird ausgeführt und ersetzt die alten Verlaufsdaten mit den neuen Ereignisdaten.

Um 8:15 Uhr sind mehrere geplante Abonnements fällig, ausgewertet zu werden. Der Generator führt die geplante Regel aus und generiert Benachrichtigungen mithilfe der Ereignisdaten im Ereignisverlauf.

Siehe auch

Konzepte

Definieren von Verläufen für eine Ereignisklasse
Definieren von Ereignisverlaufstabellen
Definieren von Ereignisverlaufsregeln
Beispiel: Vergleichen von Ereignisdaten zum Vermeiden doppelter Benachrichtigungen
Beispiel: Verwenden von Höchstwerten für Ereignisdaten zum Vermeiden doppelter Benachrichtigungen

Hilfe und Informationen

Informationsquellen für SQL Server 2005