SQL Server Integration Services教程 5:添加错误流重定向

为了处理在转换过程中可能发生的错误,Microsoft SQL Server 2005 Integration Services (SSIS) 使您能够基于每个组件和每个列来决定如何处理无法转换的数据。可以选择忽略某些列中的失败、重定向整个失败的行或者只是使组件失败。默认情况下,Integration Services 中的所有组件被配置为在发生错误时失败。而使组件失败又会导致包失败,并使所有后续处理停止。
如果不让失败导致包停止执行,一个好方法是通过配置使在转换中发生潜在处理错误时这些错误能够得到处理。虽然可能选择忽略失败以确保包成功运行,但通常更好的做法是将失败的行重定向到另一个处理路径,在这里可以使数据和错误持久化、接受检查并在随后的某个时间对其进行重新处理。
在本教程中,将创建在教程4:添加日志记录中开发的包的副本。使用这个新包时,将创建一个示例数据文件的损坏版本。损坏的文件将在运行包时强制发生处理错误。若要处理错误,需要添加并配置一个平面文件目标,该目标将从 Lookup CurrencyKey 转换接受任何重定向行。然后,将重新配置 Lookup CurrencyKey 转换,以便将无法处理的任何数据重定向到新的平面文件目标中。
复制 Lesson 4 包   
在此任务中,将创建 SSIS Tutorial 项目中包含的 Lesson 4.dtsx 包的副本。您将使用这一新副本来完成教程5剩余部分。
创建 Lesson 5 包
1.        如果 Business Intelligence Development Studio 尚未打开,请单击“开始”,指向“所有程序”,指向 Microsoft SQL Server 2005,再单击 Business Intelligence Development Studio。
2.        在“文件”菜单上,单击“打开”,单击“项目/解决方案”,选择 SSIS Tutorial,再单击“打开”,然后双击 SSIS Tutorial.sln。
3.        在解决方案资源管理器中,右键单击 Lesson 4.dtsx,再单击“复制”。
4.        在解决方案资源管理器中,右键单击“SSIS 包”,再单击“粘贴”。
默认情况下,复制的包命名为 Lesson 5.dtsx。
5.        在解决方案资源管理器中,双击 Lesson 5.dtsx 打开该包。
创建损坏的文件   
为阐释如何配置和处理转换错误,需要创建示例平面文件,处理该文件时将导致组件失败。
在本任务中,将创建现有示例平面文件的一个副本。然后,用记事本打开该文件,编辑 CurrencyID 列,以确保该列在转换查找期间无法生成匹配项。处理新文件将导致 CurrencyKey 查找转换失败,从而导致包的剩余部分失败。创建了损坏的示例文件后,将运行包以观察包失败的情况。
创建损坏的示例平面文件
1.        在记事本或其他文本编辑器中,打开 Currency_VEB.txt 文件。
默认情况下,Currency_VEB.txt 文件安装在 c:/Program Files/Microsoft SQL Server/90/Samples/Integration Services/Tutorial/Creating a Simple ETL Package/Sample Data 文件夹中。
2.        使用文本编辑器的查找和替换功能,查找 VEB 的所有实例,并替换为 BAD。
3.        在包含其他示例数据文件的同一文件夹中,将修改后的文件另存为 Currency_BAD.txt。
4.        关闭文本编辑器。
验证是否将在运行时发生错误
1.        在“调试”菜单上,单击“启动调试”。
在数据流第三次迭代时,CurrencyKey 查找转换将尝试处理 Currency_BAD.txt 文件,并且该转换将失败。转换失败将导致整个包失败。
2.        在“调试”菜单上,单击“停止调试”。
3.        在设计图面上,单击“执行结果”选项卡。
4.        浏览日志,确认是否发生了以下未处理的错误:
[Lookup 1 [1435]] Error: Row yielded no match during lookup.
添加错误流重定向   
如上一个任务中所示,当 CurrencyKey 查找转换尝试对产生错误的已损坏示例平面文件进行处理时,该转换无法生成匹配。由于转换的错误输出配置已设置为默认值,因此任何错误都将导致该转换失败。当转换失败时,该包的其余部分也将失败。
可以将组件的错误输出配置为将失败的行重定向到其他处理路径,而不是允许转换失败。该处理路径可以执行多个任务。例如,您可能要尝试清除该数据,然后重新处理失败的行。或者,您可能要将失败的行与其他错误信息保存在一起,以便以后进行验证和重新处理。
在该任务中,将把失败的行重定向到其他文件,以便以后进行处理。若要重定向失败的行,必须先添加一个平面文件目标,该目标将配置为使 CurrencyKey 查找转换中的失败行持久化。必须将 CurrencyKey 查找转换的错误输出配置为将错误数据加载到新的平面文件目标中。
添加并配置平面文件目标
1.        单击“数据流”选项卡。
2.        在工具箱中,展开“数据流目标”,然后将“平面文件目标”拖动到数据流设计图面上。
3.        单击“查找 CurrencyKey”转换,然后将红色箭头拖动到新的“平面文件目标”上。
红色箭头表示“CurrencyKey 查找”转换的错误输出。通过使用红色箭头将转换连接到目标,可以将任何处理错误重定向到目标。
4.        在“配置错误输出”对话框的“错误”列中,选择“重定向行”,然后单击“确定”。
5.        右键单击“平面文件目标”,然后单击“编辑”。
6.        在“平面文件目标编辑器”对话框中,单击“新建”。
7.        在“平面文件格式”对话框中,确保选中“带分隔符”,然后单击“确定”。
8.        在“平面文件连接管理器编辑器”对话框中,单击“浏览”。
9.        在“打开”对话框中,对于“文件名”键入 ErrorOutput.txt,然后单击“打开”。
10.        在“选项”窗格中,单击“列”。
注意,除了源数据文件中的列以外,还存在两个新列:ErrorCode 和 ErrorColumn。这些列由查找转换的错误输出生成,并可用于确定行失败的原因。
11.        单击“确定”。
12.        在“选项”窗格中,单击“映射”以验证是否所有列都正确。您也可以选择重命名目标中的列。单击“确定”。
测试 Lesson 5 教程   
在运行时,损坏的文件 Currency_BAD.txt 将无法在 CurrencyKey 查找转换中生成匹配。由于 CurrencyKey 查找的错误输出现在已经配置为将失败的行重定向到新的平面文件目标,因此该组件不会失败,并且包将成功运行。所有失败的错误行都将写入 ErrorOutput.txt。
在此任务中,您将通过运行该包对已修改的错误输出配置进行测试。包成功执行后,您将查看 ErrorOutput.txt 文件的内容。
运行 Lesson 5 教程包
1.        在“调试”菜单上,单击“启动调试”。
2.        当包运行完毕后,在“调试”菜单上,单击“停止调试”。
验证 ErrorOutput.txt 文件的内容
•        在记事本或任何其他文本编辑器中,打开 ErrorOutput.txt 文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值