次の方法で共有


マネージ イベント送信 API の使用

イベントを個別のアイテムとして提供するイベント ソースを処理する場合、カスタム イベント プロバイダで EventCollector クラスおよび Event クラスを使用できます。これらのクラスは、Microsoft.SqlServer.NotificationServices 名前空間に存在します。

EventCollector オブジェクト

EventCollector オブジェクトは、イベントを収集し、イベント バッチを Notification Services アプリケーションに送信します。EventCollector オブジェクトを作成するときは、アプリケーション名とイベント プロバイダ名で初期化します。

Event オブジェクト

Event オブジェクトは、1 つのイベントにデータをカプセル化します。Event オブジェクトを作成するときは、アプリケーション名とイベント クラス名でイベントを初期化し、イベント フィールドに値を指定します。Event オブジェクトのフィールドは、イベント クラスのスキーマによって定義されます。

ms171243.note(ja-jp,SQL.90).gifメモ :
Event オブジェクトは、初期化せずに作成することもできます。これにより、Notification Services アプリケーションへの参照がない、切断された Event オブジェクトを作成できます。この方法を使用するには、開発時に、イベント クラス名とイベント フィールド名を知っている必要があります。

作成するイベント レコードごとに、1 つの Event オブジェクトを作成し、データを設定して送信します。Event オブジェクトは、EventCollector オブジェクトにイベントを書き込んだ後で再利用できます。

イベントの書き込みおよびコミット

Event オブジェクトを作成してイベント データを設定したら、Write メソッドを使用して EventCollector オブジェクトに追加します。

EventCollector オブジェクトでは、Abort メソッドも使用できます。このメソッドは、現在のイベント バッチを破棄する場合に呼び出します。

EventCollector オブジェクトと Event オブジェクトの例

この例では、次の名前空間を使用します。

  • System
  • Microsoft.SqlServer.NotificationServices
string instanceName = "Tutorial";
string applicationName = "Weather";
string eventClassName = "WeatherEvents";
string eventProviderName = "WeatherSPs";

// Create an NSInstance object.
NSInstance testInstance = new NSInstance(instanceName);

// Create an NSApplication object.
NSApplication testApplication =
    new NSApplication(testInstance, applicationName);

// Create an EventCollector object.
EventCollector testEventCollector =
    new EventCollector(testApplication, eventProviderName);

// Create and define an Event object.
Event evt = new Event(testApplication, eventClassName);
evt["City"] = "Seattle";
evt["Date"] = DateTime.Now;
evt["Low"] = 40;
evt["High"] = 50;
evt["Forecast"] = "Cloudy";

// Write the event to the event collector's batch
testEventCollector.Write(evt);

// Commit the event batch to the application database.
testEventCollector.Commit();

切断された Event オブジェクトの例

この例では、Event オブジェクトを NSApplication および EventClass で初期化せずにイベントを定義する方法を示します。

// Initialize the Event object.
Event testEvent = new Event();
testEvent.EventClassName = "StockEvents";

// Use the Event object.
testEvent["StockSymbol"] = "AWKS";
testEvent["StockPrice"] = "58.35";

参照

概念

ホストされるイベント プロバイダの開発
ホストされないイベント プロバイダの開発

その他の技術情報

カスタム イベント プロバイダの開発

ヘルプおよび情報

SQL Server 2005 の参考資料の入手