共用方式為


定義事件紀事輯規則

事件紀事輯規則是在事件紀事輯資料表中維護資料。每一個事件紀事輯都有一個名稱、動作和動作逾時值。

規則名稱

事件紀事輯規則名稱在 Notification Services 應用程式中唯一地識別規則。規則名稱是用來命名資料庫物件。基於一致性,事件紀事輯名稱應該符合事件紀事輯資料表的名稱。

動作

動作包含在紀事輯資料表中維護資料的程式碼,使資料保持在可用狀態,供應用程式使用。例如,每次處理新的事件批次時,動作中的陳述式可刪除事件紀事輯資料表中所有現有的資料,然後插入新的事件資料。

動作中的陳述式可以是一或多個 Transact-SQL 查詢,或是一個執行預存程序的 Transact-SQL EXECUTE 陳述式。

每次產生器處理事件批次時,動作陳述式就會執行。它們會在產生器執行訂閱規則而產生通知之前完成。因此,事件紀事輯在用來產生通知之前會更新。

ms172596.note(zh-tw,SQL.90).gif附註:
如果您想要在產生通知之後維護紀事輯資料,請將 Transact-SQL 查詢或預存程序呼叫加入至訂閱事件規則中。如需詳細資訊,請參閱<定義事件規則>。

動作的 Transact-SQL 陳述式通常從事件類別中選取資料,並在事件紀事輯中插入或更新資料。下列範例顯示動作的範例 Transact-SQL 陳述式。陳述式從 StockEvents 事件類別選取新資料,然後將資料插入 StockEventChron 紀事輯。然後,它們會更新已在紀事輯內的股票的股價。

-- Insert New Stock Symbols with Prices
INSERT dbo.StockEventsChron (StockSymbol, StockPrice)
SELECT e.StockSymbol, e.StockPrice
    FROM dbo.StockEvents AS e
    WHERE e.StockSymbol
        NOT IN (SELECT StockSymbol FROM dbo.StockEventsChron);
-- Update Existing Stock Symbols with New Prices
UPDATE dbo.StockEventsChron
    SET StockPrice = e.StockPrice
    FROM dbo.StockEvents AS e 
    JOIN dbo.StockEventsChron AS c
        ON e.StockSymbol = c.StockSymbol
        WHERE e.StockPrice > c.StockPrice;
ms172596.note(zh-tw,SQL.90).gif附註:
如果您在 XML 檔中定義應用程式,您必須將保留的 XML 字元 (如 '>') 取代成它們的實體參考。如需詳細資訊,請參閱<XML Reserved Characters>。

動作中的所有陳述式是相同交易的一部份。它們為全部完成或全部回復。

如需有關建立 Transact-SQL 查詢的詳細資訊,請參閱<查詢基本原理>。

動作逾時

動作逾時指定允許動作中的陳述式完成的時間長度。如果陳述式未在逾時發生之前完成,通知系統會回復該交易,將事件紀事輯規則標示為失敗,並將錯誤寫入至事件記錄檔。

ms172596.note(zh-tw,SQL.90).gif附註:
如果事件紀事輯規則失敗,表示發生錯誤,或在維護事件紀事輯時發生逾時,在相同產生器配量內引發的相關訂閱事件規則也會失敗。排程規則不會失敗,因為它們使用最新資料。

若要定義事件紀事輯規則

事件紀事輯規則範例

下列主題提供事件紀事輯規則的範例。

請參閱

參考

EventChronicle
EventChronicleRule
EventFieldCollection

概念

定義核心事件類別屬性
定義事件類別的索引
定義事件規則

其他資源

定義事件類別
EventClass Element (ADF)
定義 Notification Services 應用程式
CREATE TABLE (Transact-SQL)
INSERT (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)
DELETE (Transact-SQL)

說明及資訊

取得 SQL Server 2005 協助