验证是否将在运行时发生错误
-
在“调试”菜单中,单击“启动调试”。
在数据流第三次迭代时,Lookup Currency Key 转换将尝试处理 Currency_BAD.txt 文件,并且该转换将失败。 转换失败将导致整个包失败。
-
在“调试”菜单中,单击“停止调试”。
-
在设计图面上,单击“执行结果”选项卡。
-
浏览日志,确认是否发生了以下未处理的错误:
[Lookup Currency Key[27]] Error: Row yielded no match during lookup.
Step 3: 添加错误流重定向
如上一个任务中所示,当 Lookup Currency Key 转换尝试对产生错误的已损坏示例平面文件进行处理时,该转换无法生成匹配。由于转换针对错误输出使用了默认设置,因此,任何错误都将导致该转换失败。当转换失败时,该包的其余部分也将失败。
可以使用错误输出将组件配置为将失败的行重定向到其他处理路径,而不是允许转换失败。使用单独的错误处理路径,您可以执行多项任务。例如,您可能要尝试清除该数据,然后重新处理失败的行。或者,您可能要将失败的行与其他错误信息保存在一起,以便以后进行验证和重新处理。
在本任务中,您将 Lookup Currency Key 转换配置为将所有失败的行重定向到错误输出。在数据流的错误分支中,这些行将被写入文件中。
默认情况下,Integration Services 错误输出中的另外两列(ErrorCode 和 ErrorColumn)只包含表示错误号的数值代码以及出现错误的列的 ID。如果没有相应的错误说明,这些数值没有多大用处。
若要更有效地使用错误输出,请在包将失败的行写入文件之前,使用脚本组件来访问 Integration Services API,然后获取错误说明。
配置错误输出
1. 在“SSIS 工具箱”中,展开“公共”,然后将“脚本组件”拖动到“数据流”选项卡的设计图面上。将“脚本”放置在 Lookup Currency Key 转换的右侧。
2. 在“选择脚本组件类型”对话框中,单击“转换”,再单击“确定”。
3. 单击“Lookup Currency Key”转换,然后将红色箭头拖动到新添加的“脚本”转换上,以连接这两个组件。
4. 红色箭头表示“Lookup Currency Key”转换出现错误输出。通过使用红色箭头将转换连接到脚本组件,您可以将所有处理错误重定向到脚本组件,然后,该组件会处理这些错误并将它们发送到目标。
5. 在“配置错误输出”对话框的“错误”列中,选择“重定向行”,再单击“确定”。
6. 在“数据流”设计图面上,在新添加的“脚本组件”中单击“脚本组件”,然后将该名称更改为获取错误说明。
7. 双击 Get Error Description 转换。
8. 在“脚本转换编辑器”对话框中的“输入列”页中,选择 ErrorCode 列。
9. 在“输入和输出”页中,展开“输出 0”,单击“输出列”,再单击“添加列”。
10. 在 Name 属性中,键入错误说明并将 DataType 属性设置为“Unicode string [DT_WSTR]”。
11. 在“脚本”页中,确保已将 LocaleID 属性设置为“英语(美国)”。
12. 单击“编辑脚本”打开 MicrosoftVisual Studio Tools for Applications (VSTA)。在 Input0_ProcessInputRow 方法中,键入或粘贴以下代码。
Step 4: 添加平面文件目标
添加并配置平面文件目标
- 单击“数据流”选项卡。
- 在“SSIS 工具箱”中,展开“其他”,然后将“平面文件目标”拖动到数据流设计图面上。将“平面文件目标”直接放在“获取错误说明”转换的下面。
- 单击“获取错误说明”转换,然后将绿色箭头拖动到新的“平面文件目标”上。
- 在“数据流”设计图面上,在新添加的“平面文件目标”转换中单击“平面文件目标”,然后将该名称更改为 Failed Rows。
- 右键单击 Failed Rows 转换,再单击“编辑”,然后在平面文件目标编辑器中单击“新建”。
- 在“平面文件格式”对话框中,确认已选中“带分隔符”,然后单击“确定”。
- 在平面文件连接管理器编辑器的“连接管理器名称”框中,键入 Error Data。
- 在“平面文件连接管理器编辑器”对话框中,单击“浏览”,然后找到存储文件的文件夹。
- 在“打开”对话框中,对于“文件名”键入 ErrorOutput.txt,然后单击“打开”。
- 在“平面文件连接管理器编辑器”对话框中,验证“区域设置”框是否包含“英语(美国)”,“代码页”是否包含 1252 (ANSI -Latin I)。
- 在“选项”窗格中,单击“列”。请注意,除了源数据文件中的列之外,还存在三个新列:ErrorCode、ErrorColumn 和 ErrorDescription。这三列由 Lookup Currency Key 转换的错误输出和获取错误说明转换中的脚本生成,可用于排查失败行的原因。
- 单击“确定”。
- 在平面文件目标编辑器中,清除“覆盖文件中的数据”复选框。清除该复选框可使错误在执行多个包的过程中持续存在。
- 在平面文件目标编辑器中,单击“映射”来验证所有列是否正确。您也可以选择重命名目标中的列。
- 单击“确定”。
Step 5: 测试包
察看Error Output.txt文件