共用方式為


範例:為排程訂閱使用事件紀事輯

更新: 2006 年 7 月 17 日

下列範例顯示如何使用事件紀事輯搭配 Notification Services 事件類別,提供排程訂閱適用的事件資料。在這個範例中,氣象更新應用程式會通知使用者他們所在區域每日的氣象預測。

狀況

Notification Services 應用程式會收集氣象預測資料,且會將氣象通知傳給訂閱者。每個訂閱都會指定要收集氣象資訊的縣 (市),以及要接收通知的排程。當到了訂閱的排程時間時,應用程式會將該縣 (市) 的最新氣象預測傳給訂閱者。

應用程式有一個儲存所有主要縣 (市) 最新氣象預測的事件紀事輯。在這個應用程式中,每個事件批次都包含應用程式所支援之所有縣 (市) 的預測。當氣象預測批次到達時,事件紀事輯規則會刪除舊的預測,將新的預測加入事件紀事輯中。

事件紀事輯資料表

在事件類別中,您必須定義事件紀事輯資料表。紀事輯會使用事件類別的相同資料行 (CityDateLowHighForecast)。

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)
    );

當您更新應用程式時,如果事件紀事輯有了任何變更,Notification Services 都會卸除目前的資料表,建立一份新資料表。如需有關這個語法的詳細資訊,請參閱<定義事件紀事輯資料表>。

事件紀事輯規則

另外,在事件類別中,您也會定義一個每次有事件批次到達時,都要執行的事件紀事輯規則。下列規則會先從事件紀事輯刪除所有的資料。之後,規則會從包含事件類別目前事件的 WeatherEvents 檢視中選取目前的事件批次,再將它們加入事件紀事輯中。

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;

如需詳細資訊,請參閱<定義事件紀事輯規則>。

用來產生通知的排程規則

用來產生通知的排程規則利用事件紀事輯來作為事件來源。這可以確定排程訂閱會有事件資料。

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;

結果

新的事件批次在上午 8:00 到達,其中含有最新的氣象資訊。此時會執行事件紀事輯規則,用新的事件資料來取代舊的紀事輯資料。

到了上午 8:15,便應該評估許多排程訂閱。產生器會執行排程規則,且會利用事件紀事輯中的事件資料來產生通知。

請參閱

概念

定義事件類別的紀事輯
定義事件紀事輯資料表
定義事件紀事輯規則
範例:比較事件資料以避免重複的通知
範例:使用事件資料高度值以避免重複的通知

說明及資訊

取得 SQL Server 2005 協助