SSIS中使用事件处理程序的五个步骤(上)

 
   | |

导读:本文介绍了事件处理程序标签页,并展示了怎样给指定的可执行体以及它的事件开发一个事件处理程序。

关键词:SQL Server SSIS 事件处理程序 数据流

正在加载数据... 【TechTarget中国原创】有很多关于创建SQL Server集成服务(SSIS)包的信息,都关注怎样开发控制流元素和数据流元素。众所周知,你在SSIS设计器的“控制流”标签页开发控制流元素,在“数据流”标签页开发数据流元素。SSIS设计器还提供了“事件处理程序”标签页,它支持你设计基于包可执行体(包括文件,任务等)和它们生成事件的事件处理程序。在本文中,我会给你介绍事件处理程序标签页,并展示怎样给指定的可执行体以及它的事件开发一个事件处理程序。

【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 2005中引入的数据库可用性改善方面最吸引人的特性就是数据库段落还原功能,也就是接下来我要在本文中论述的内容。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录