技术开发 频道

在SQL Server中调试SSIS包

  【IT168 技术文档】SQL Server 2005的新特性,SQL Server Integration Services (SSIS)增加了一种企业级数据抽取、转换和下载(ETL)工具,丰富了不断增长的SQL Server工具套件。SSIS取代了DTS,这只是在SQL Server的两个版本中。除了有点慢、操作起来很灵活外,DTS并没有在你遇到问题时提供任何简单的调试包的方法。在最近的SQL Server版本中有一些调试SSIS包的方法,这些方法可以帮你找到出现这些问题的根本原因。

  SSIS包嵌在SQL Server Business Intelligence Development Studio (BIDS)中,附带有一些SQL Server 2005客户机工具。事实上,BIDS只是Visual Studio的另一个版本。实际上如果你在同一台机器上安装Visual Studio作为BIDS,从这一点来看,你可以运行Visual Studio代替BIDS。那么,这里的调试是什么意思?它的意思就是在你开发SSIS包时你就可以用Visual Studio了。

  SSIS包调试断点(Breakpoint)

  设置断点的能力就是调试过程之一。SSIS可以让你设置两种不同的断点:一个在包、任务和存储器上,另一种就是在脚本对象里。设置好后,对SSIS包执行的操作就会在断点处停止,它可以让你观察处于暂停状态下的包。在断点的时,我们要记住这些断点只能在控制流上的项目上进行设置,而不能在数据流任务上进行设置。

  我们首先来看看在包、任务和容器上设置断点。

  要在包上设置断点,你就要进入控制流tab键,在包的面上单击右键,选择Edit Breakpoints。如果你想为任务或容器设置断点,就可以在你感兴趣的任务或容器上单击右键,再选择Edit Breakpoints。在这两种情况中,你都可以看到如图1所示的Set Breakpoints会话。

SSIS包的Set Breakpoint会话

  图1:SSIS包的Set Breakpoint会话

  在该会话框中,你可以选择在这种条件下的Break Condition和Hit Count。在该实例中,当收到OnPreExecute事件时,我就要暂停数据流任务。注意,Hit Count有很多任务可供我们选择。在这个事例中,我们可以在任务收到OnPreExecute后再暂停,在任务运行之前OnPreExecute事件本来是触发的。你运行包的时候,OnPreExecute事件就停止,并突出启动断点任务,如图2所示:

“数据流任务”上的断点已经启动

  图2:“数据流任务”上的断点已经启动


  你可以看到,我们之前设置的断点已经启动,黄色的箭头指向活动的断点。这时,你就可以访问所有的本地变量、任意你曾配置的观察变量(watch variable)以及暂停之后表示包的状况的视图。

  除了能够在包、容器和任务上设置断点之外,你还可以在脚本任务里对它们进行配置。有两种方法实现:你可以在脚本设计器里打开脚本或者单击右键选择Breakpoint> Insert Breakpoint。或者,在编辑器左边的空白地方单击左键。和以前一样,遭遇断点之后SSIS包就会暂停。

0
相关文章