1.7 错误处理和日志记录
在SSIS中,程序包事件是在用户界面中公开的,每个事件都可能具有各自的事件处理程序设计界面。这种设计界面(design surface)在Visual Studio中为窗格,用户可以指定当发生给定的事件时所要执行的一系列任务。有大量的事件处理程序可以帮助用户开发那些可以自动修复问题的程序包。例如,当作用域中发生错误时OnError错误处理程序会触发一个事件。作用域可以是整个程序包或单个容器。事件处理程序表示为工作流,类似于SSIS中其他任何工作流。事件处理程序的理想使用方式是:当程序包中组件出现故障时来通知操作人员。在第13章中将了解到更多有关事件处理程序的内容。
在SSIS 2005中,处理数据中的错误更容易了,在数据流中,用户可以在转换或连接中指定当数据存在错误时所希望发生的事件。用户可以选择当出现错误时整个转换过程失效并退出,或者是将错误的行重定向到某个失效的数据流分支中。而且还可以选择忽略错误。图1-8显示了一个错误处理程序例子,其中当派生列转换发生错误时,错误将被输出到数据流。用户然后可以使用该输出信息写入到某个输出日志中。
一旦配置好之后,用户可以指定将错误记录写入到另外一个连接,如图1-9所示。其中可以看到On Failure优先约束作为一条红线将派生列1任务连接到SQL Server目的地。绿色箭头则是On Success优先约束。用户可以看到在OLE DB源和派生列转换之间具有On Success约束。
图 1-8
图 1-9
在SSIS 2005中日志记录也有所改进。比起 SQL Server 2000 DTS而言,SSIS 2005中的日志更加详细。针对每个任务或程序包可以记录十多个事件。而且用户可以设置针对某个任务进行部分记录,同时对于计费这种任务则设置更详细的记录。在SSIS中可以进行监视的事件包括OnError、OnPostValidate、OnProgress和OnWarning,等等。日志可以写入到几乎任何连接:SQL Profiler、文本文件、SQL Server、Windows 事件日志或者是某个XML文件。