定義事件紀事輯規則
事件紀事輯規則是在事件紀事輯資料表中維護資料。每一個事件紀事輯都有一個名稱、動作和動作逾時值。
規則名稱
事件紀事輯規則名稱在 Notification Services 應用程式中唯一地識別規則。規則名稱是用來命名資料庫物件。基於一致性,事件紀事輯名稱應該符合事件紀事輯資料表的名稱。
動作
動作包含在紀事輯資料表中維護資料的程式碼,使資料保持在可用狀態,供應用程式使用。例如,每次處理新的事件批次時,動作中的陳述式可刪除事件紀事輯資料表中所有現有的資料,然後插入新的事件資料。
動作中的陳述式可以是一或多個 Transact-SQL 查詢,或是一個執行預存程序的 Transact-SQL EXECUTE 陳述式。
每次產生器處理事件批次時,動作陳述式就會執行。它們會在產生器執行訂閱規則而產生通知之前完成。因此,事件紀事輯在用來產生通知之前會更新。
附註: |
---|
如果您想要在產生通知之後維護紀事輯資料,請將 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;
附註: |
---|
如果您在 XML 檔中定義應用程式,您必須將保留的 XML 字元 (如 '>') 取代成它們的實體參考。如需詳細資訊,請參閱<XML Reserved Characters>。 |
動作中的所有陳述式是相同交易的一部份。它們為全部完成或全部回復。
如需有關建立 Transact-SQL 查詢的詳細資訊,請參閱<查詢基本原理>。
動作逾時
動作逾時指定允許動作中的陳述式完成的時間長度。如果陳述式未在逾時發生之前完成,通知系統會回復該交易,將事件紀事輯規則標示為失敗,並將錯誤寫入至事件記錄檔。
附註: |
---|
如果事件紀事輯規則失敗,表示發生錯誤,或在維護事件紀事輯時發生逾時,在相同產生器配量內引發的相關訂閱事件規則也會失敗。排程規則不會失敗,因為它們使用最新資料。 |
若要定義事件紀事輯規則
事件紀事輯規則範例
下列主題提供事件紀事輯規則的範例。
請參閱
參考
EventChronicle
EventChronicleRule
EventFieldCollection
概念
其他資源
定義事件類別
EventClass Element (ADF)
定義 Notification Services 應用程式
CREATE TABLE (Transact-SQL)
INSERT (Transact-SQL)
SELECT (Transact-SQL)
UPDATE (Transact-SQL)
DELETE (Transact-SQL)