有很多关于创建SQL Server集成服务(SSIS)包的信息,都关注怎样开发控制流元素和数据流元素。众所周知,你在SSIS设计器的“控制流”标签页开发控制流元素,在“数据流”标签页开发数据流元素。SSIS设计器还提供了“事件处理程序”标签页,它支持你设计基于包可执行体(包括文件,任务等)和它们生成事件的事件处理程序。在本文中,我会给你介绍事件处理程序标签页,并展示怎样给指定的可执行体以及它的事件开发一个事件处理程序。
要为SSIS包创建事件处理程序,你必须首先实现该包中要包含的可执行体。可执行体可以是任何控制流任务,或者是容器,或者它可以引用该包本身。你可以对包内的任何可执行体创建事件处……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
有很多关于创建SQL Server集成服务(SSIS)包的信息,都关注怎样开发控制流元素和数据流元素。众所周知,你在SSIS设计器的“控制流”标签页开发控制流元素,在“数据流”标签页开发数据流元素。SSIS设计器还提供了“事件处理程序”标签页,它支持你设计基于包可执行体(包括文件,任务等)和它们生成事件的事件处理程序。在本文中,我会给你介绍事件处理程序标签页,并展示怎样给指定的可执行体以及它的事件开发一个事件处理程序。
要为SSIS包创建事件处理程序,你必须首先实现该包中要包含的可执行体。可执行体可以是任何控制流任务,或者是容器,或者它可以引用该包本身。你可以对包内的任何可执行体创建事件处理程序。
为了演示下面的事件处理程序例子,我创建了一个简单的SSIS包。该包从 AdventureWorks示例数据库检索数据并把这些数据插入EmpHireDates表和EmpHireDates2表。我用下面的Transact-SQL语句创建这两个表:
SELECT c.FirstName, c.MiddleName, c.LastName, e.HireDate INTO HumanResources.EmpHireDates FROM Person.Contact c INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID SELECT * INTO HumanResources.EmpHireDates2 FROM HumanResources.EmpHireDates |
图1∶这个包的控制流标签页。
第一个执行SQL的任务清空EmpHireDates表和EmpHireDates2表。数据流任务从Employee表和Contact表检索数据,然后把数据导入EmpHireDates表。
图2∶数据流标签页详细信息。
控制流里第二个执行SQL的任务是从EmpHireDates表检索数据,然后把数据导入EmpHireDates2表。图1和图2中显示的SSIS包是非常简单的。然而,要想说清楚怎样创建事件处理程序,这个包提供的元素还不够。要是你点击事件处理程序标签页,你会看到于图3类似的设计界面。在设计界面上方有两个重要的元素:可执行体下拉列表和事件处理程序下拉列表。
图3∶可执行体的和事件处理程序下拉列表。
第2步∶选择可执行体
可执行体下拉列表会显示一个当前包中存在的所有可执行体的分层级树形视图。在图4中,你会看到包执行体在列表的最上方。在包执行体下面是可执行SQL任务和可执行序列容器。因为控制流中的序列容器包含一个数据流任务和一个执行SQL的任务。你可以在可执行序列容器下面的“可执行体(Executables)”文件夹中找到这两个执行体。
图4∶执行SQL任务和序列容器。
在每个可执行体下面,你也会找到一个事件处理程序文件夹。不管你在什么时候给可执行体定义事件处理程序,该事件处理程序都会出现在对应的事件处理程序文件夹下。要想给可执行体定义事件处理程序,先要在下拉列表里选择可执行体,然后点击确定(OK)。在本文中,我给序列容器执行体创建了一个事件处理程序。
第3步∶选择事件
你可以给每一个可执行体创建一个或多个事件处理程序。每一个事件处理程序都必须在事件处理程序下拉列表中的事件列表中选择,如图5。例如,如果你选择序列容器执行体,你可以创建一个基于OnError事件,OnInformation事件,OnPostExecute事件或者下拉列表中的其他事件的事件处理程序。大部分事件的名称是自解释的,如果需要的话,你可以在 Microsoft SQL Server 2005联机指南中找到每一种事件类型的详细说明。
图5∶事件处理程序下拉列表。
当你运行包,然后运行执行体时,它会产生一个或多个预定义事件。它产生哪个事件取决于该操作的成功失败。例如:如果序列容器在运行时遇到错误,它会触发OnError事件;或者在执行体开始运行之前,它会触发OnPreExecute事件。有时事件由容器内部的任务触发。例如:数据流任务能产生OnInformation事件。
翻译
相关推荐
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。
-
如何在Azure部署时选择合适的SQL Server?
想要在Azure上运行SQL Server,企业一般会面临两种选择:在Azure虚拟机上安装SQL Server或使用Azure SQL Database。
-
Linux支持的引入 推动了SQL Server 2016集成服务的发展
随着SQL Server的不断发展,集成服务也在发生相应的变化。在最新的SSIS更新中,增加Linux支持和SQL Server 2016升级向导。