SQL Server イベント プロバイダのデータの収集とフィルタ処理
Microsoft SQL Server イベント プロバイダを定義するときには、イベント データを収集するクエリを定義する必要があります。必要に応じて、データを収集するテーブルで後処理を実行するクエリを定義することもできます。
データの収集
データを収集するための Transact-SQL クエリでは、送信先イベント クラスのフィールドと正確に一致するデータを返す任意の Transact-SQL クエリを定義できます。たとえば、StockSymbol と StockPrice という 2 つのフィールドを持つイベント クラスを定義した場合、イベントを収集するクエリの唯一の要件は、StockSymbol フィールドと StockPrice フィールドに名前およびデータ型が一致する 2 つの列だけから構成されるデータを返すことです。以下は、そのようなクエリの例です。
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)