定义事件历史记录规则

事件历史记录规则维护事件历史记录表中的数据。每个事件历史记录都有名称、操作和操作超时。

规则名称

事件历史记录规则名称唯一地标识 Notification Services 应用程序中的规则。规则名称用于命名数据库对象。出于一致性的目的,事件历史记录名称应与事件历史记录表的名称相匹配。

操作

操作包含用于维护历史记录表中数据的代码,操作可将应用程序的数据保持在可用状态。例如,每次处理新事件批次时,操作中的语句可以删除事件历史记录表中的所有现有数据,然后插入新的事件数据。

操作中的语句可以是一个或多个 Transact-SQL 查询,也可以是一个运行存储过程的 Transact-SQL EXECUTE 语句。

每当生成器处理一个事件批次时,操作语句都将运行。这些语句在生成器运行生成通知的订阅规则之前完成。因此,事件历史记录在用于生成通知之前即被更新。

ms172596.note(zh-cn,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-cn,SQL.90).gif注意:
如果在 XML 文件中定义应用程序,则必须用保留的 XML 字符(如“>”)的实体引用将其替换。有关详细信息,请参阅 XML Reserved Characters

操作中的所有语句都是同一事务的一部分。他们将全部完成或全部回滚。

有关创建 Transact-SQL 查询的详细信息,请参阅查询基础知识

操作超时

操作超时指定在操作中,允许语句执行的时间。如果在发生超时之前,语句的执行未完成,则通知系统将回滚事务,将事件历史记录规则标记为失败并将错误写入事件日志。

ms172596.note(zh-cn,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 帮助