次の方法で共有


SQL Server イベント プロバイダのデータの収集とフィルタ処理

Microsoft SQL Server イベント プロバイダを定義するときには、イベント データを収集するクエリを定義する必要があります。必要に応じて、データを収集するテーブルで後処理を実行するクエリを定義することもできます。

データの収集

データを収集するための Transact-SQL クエリでは、送信先イベント クラスのフィールドと正確に一致するデータを返す任意の Transact-SQL クエリを定義できます。たとえば、StockSymbolStockPrice という 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;

後処理クエリは、イベント収集クエリと同じトランザクションで実行されます。

後処理クエリのストアド プロシージャを実行できます。

参照

概念

SQL Server イベント プロバイダの定義

その他の技術情報

イベント プロバイダの定義
標準イベント プロバイダ
SELECT (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手