定义 Microsoft SQL Server 事件提供程序时,必须定义收集事件数据的查询。您可以根据需要定义对从中收集数据的表执行后处理的查询。
收集数据
为收集数据定义的 Transact-SQL 查询,可以是任何返回完全匹配目标事件类中的字段的数据的 Transact-SQL 查询。例如,如果定义了具有 StockSymbol 和 StockPrice 这两个字段的事件类,对收集事件的查询的唯一要求是,只返回匹配 StockSymbol 和 StockPrice 字段的名称和数据类型的两列数据。此类查询的示例如下:
SELECT StockSymbol, StockPrice
FROM StockDB.dbo.StockTable;
可以执行收集事件的查询的存储过程。
筛选数据
如果 SELECT 语句可能返回大量数据,并且其中的某些数据不是有效的事件数据,您可以筛选查询。例如,您可以编写返回股票数据(只包含订阅方已创建订阅的股票)的查询:
SELECT StockSymbol, StockPrice
FROM StockDB.dbo.StockTable
WHERE StockSymbol IN
(SELECT DISTINCT StockSymbol FROM dbo.StockSubscriptions);
此查询只返回可能生成通知的股票数据。
后处理
SQL Server 事件提供程序支持后处理查询,因此您可以在生成事件后清理或变更数据。例如,在生成事件之前,某列的值为 0,但您希望在生成事件后将值改为 1。若要更新表,可编写如下查询:
UPDATE StockDB.dbo.StockTable
SET EventUsage = 1
WHERE EventUsage = 0;
后处理查询与事件收集查询运行在同一个事务中。
您可以执行后处理查询的存储过程。
请参阅
概念
其他资源
定义事件提供程序
标准事件提供程序
SELECT (Transact-SQL)