Integration Services 事件处理程序

在运行时,可执行文件(包以及 Foreach 循环容器、For 循环容器、序列容器和任务宿主容器)会引发事件。例如,错误发生时会引发 OnError 事件。可以为这些事件创建自定义事件处理程序,以扩展包的功能并使包在运行时更容易管理。事件处理程序可以执行诸如下列任务:

  • 当包或任务运行完成时清除临时数据存储。

  • 在包运行前检索系统信息,以便评估资源可用性。

  • 在引用表中的查找失败时刷新表中的数据。

  • 当发生错误或警告时,或者当任务失败时,发送电子邮件。

如果事件没有事件处理程序,则将该事件提升到包中容器层次结构中的上一级容器。如果此容器具有事件处理程序,则该事件处理程序当事件发生时运行。如果没有,则将该事件提升到容器层次结构中的上一级容器。

以下关系图显示具有 For 循环容器的简单包,该容器包含一个执行 SQL 任务。

包、For 循环、任务宿主和执行 SQL 任务

只有包具有事件处理程序,用于处理其 OnError 事件。如果执行 SQL 任务运行时发生错误,包的 OnError 事件处理程序就会运行。以下关系图显示导致包的 OnError 事件处理程序执行的调用序列。

事件处理程序流

事件处理程序是事件处理程序集的成员,所有容器都包含此事件处理程序集。如果使用 SSIS 设计器创建包,就可以在 SSIS 设计器的**“包资源管理器”选项卡上的“事件处理程序”**文件夹中看到事件处理程序集的成员。

可以采用下列方法配置事件处理程序容器:

  • 指定事件处理程序的名称和说明。

  • 指示事件处理程序是否运行,事件处理程序失败时包是否失败,以及事件处理程序失败前可发生的错误数。

  • 指定返回执行结果,而不是事件处理程序在运行时返回的实际执行结果。

  • 指定事件处理程序的事务选项。

  • 指定事件处理程序使用的日志记录模式。

事件处理程序内容

创建事件处理程序与生成包类似;事件处理程序具有多个任务和容器,这些任务和容器按照一定顺序组织成控制流,事件处理程序也可以包含多个数据流。SSIS 设计器包含**“事件处理程序”**选项卡,用于创建自定义事件处理程序。有关详细信息,请参阅创建包事件处理程序

还可以采用编程方式创建事件处理程序。有关详细信息,请参阅以编程方式处理事件

运行时事件

下表列出 Integration Services 提供的事件处理程序,并介绍导致事件处理程序运行的运行时事件。

事件处理程序

事件

OnError

OnError 事件的事件处理程序。此事件在发生错误时由可执行文件引发。

OnExecStatusChanged

OnExecStatusChanged 事件的事件处理程序。此事件在其执行状态更改时由可执行文件引发。

OnInformation

OnInformation 事件的事件处理程序。此事件在可执行文件的验证和执行期间引发以报告信息。此事件仅传递信息,不传递错误或警告。

OnPostExecute

OnPostExecute 事件的事件处理程序。此事件由可执行文件在其运行完成后立即引发。

OnPostValidate

OnPostValidate 事件的事件处理程序。此事件由可执行文件在其验证完成时引发。

OnPreExecute

OnPreExecute 事件的事件处理程序。此事件由可执行文件在其运行前引发。

OnPreValidate

OnPreValidate 事件的事件处理程序。此事件由可执行文件在其验证开始时引发。

OnProgress

OnProgress 事件的事件处理程序。此事件由可执行文件在其完成可度量的进度时引发。

OnQueryCancel

OnQueryCancel 事件的事件处理程序。此事件由可执行文件引发,以确定它是否应停止运行。

OnTaskFailed

OnTaskFailed 事件的事件处理程序。此事件由任务在其失败时引发。

OnVariableValueChanged

OnVariableValueChanged 事件的事件处理程序。此事件在变量值更改时由可执行文件引发。此事件由此变量的可执行文件引发。如果将变量的 RaiseChangeEvent 属性设置为 False,则不引发此事件。有关详细信息,请参阅 Integration Services 变量

OnWarning

OnWarning 事件的事件处理程序。此事件在发生警告时由可执行文件引发。

配置事件处理程序

可以在 Business Intelligence Development Studio 的**“属性”**窗口中设置属性,或以编程方式设置属性。

有关如何在 Business Intelligence Development Studio 中设置这些属性的详细信息,请参阅如何设置任务或容器的属性

以编程方式配置事件处理程序

有关如何以编程方式设置这些属性的详细信息,请参阅 DtsEventHandler

Integration Services 图标(小) 使 Integration Services 保持最新

若要从 Microsoft 获得最新的下载内容、文章、示例和视频,以及从社区获得所选解决方案,请访问 MSDN 或 TechNet 上的 Integration Services 页:

若要获得有关这些更新的自动通知,请订阅该页上提供的 RSS 源。