使用托管事件提交 API

当使用的事件源可以独立项提供事件时,可以在自定义事件提供程序中使用 EventCollectorEvent 类。这些类位于 Microsoft.SqlServer.NotificationServices 命名空间中。

EventCollector 对象

EventCollector 对象收集事件然后将事件批次提交给 Notification Services 应用程序。创建 EventCollector 对象时,将用应用程序和事件提供程序名称对其进行初始化。

Event 对象

Event 对象封装单个事件的数据。创建 Event 对象时,将使用应用程序和事件类名对事件进行初始化,然后提供事件字段的值。Event 对象的字段由事件类架构定义。

ms171243.note(zh-cn,SQL.90).gif注意:
可以创建 Event 对象而不对其初始化。这样可以创建一个不引用 Notification Services 应用程序的“已断开连接的”Event 对象。为了使用此技术,在开发时必须知道事件类名和事件字段名。

为要创建的每个事件记录创建、填充并提交一个 Event 对象。在将事件写入 EventCollector 对象之后可以重新使用 Event 对象。

写入和提交事件

创建 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();

Disconnected Event 对象示例

此示例显示如何定义一个事件,而不用 NSApplicationEventClass 初始化 Event 对象。

// 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 帮助