第 4-3 课:添加错误流重定向
适用于: SQL Server Azure 数据工厂中的 SSIS Integration Runtime
在上一个任务中,转换尝试处理已损坏的示例平面文件时,Lookup Currency Key 无法生成匹配项,从而产生错误。 由于转换针对错误输出使用了默认设置,因此,任何错误都将导致该转换失败。 当转换失败时,该包的其余部分也将失败。
可以使用错误输出将组件配置为将失败的行重定向到其他处理路径,而不是允许转换失败。 使用单独的错误处理路径提供了更多选项。 例如,可以清除数据,然后重新处理失败的行。 或者,可以保存失败的行及其错误信息,以便以后进行验证和重新处理。
在本任务中,你将 Lookup Currency Key 转换配置为将所有失败的行重定向到错误输出。 在数据流的错误分支中,Integration Services 将这些行写入文件。
默认情况下,Integration Services 错误输出中的两个额外列 ErrorCode 和 ErrorColumn 仅包含数字错误代码和发生错误的列的 ID。 在本任务中,在程序包将失败的行写入文件之前,使用脚本组件来访问 Integration Services API 并获取错误说明。
配置错误输出
在“SSIS 工具箱”中,展开“公共”,然后将“脚本组件”拖动到“数据流”选项卡的设计图面上。将“脚本”放置在“Lookup Currency Key”转换的右侧。
在“选择脚本组件类型”对话框中,选择“转换”,然后选择“确定”。
要连接这两个组件,请选择“Lookup Currency Key”转换,然后将其红色箭头拖到新的“脚本”转换中。
红色箭头表示“Lookup Currency Key”转换的错误输出。 通过使用红色箭头将转换连接到脚本组件,可以将所有处理错误重定向到脚本组件,该组件会处理这些错误并将其发送到目标。
在“配置错误输出”对话框的“错误”列中,选择“重定向行”,再单击“确定”。
在“数据流”设计图面上,在新的“ScriptComponent”中单击名称“脚本组件”,然后将该名称更改为“获取错误说明”。
双击“Get Error Description”转换。
在“脚本转换编辑器”对话框中的“输入列”页中,选择“ErrorCode”列。
在“输入和输出”页中,展开“输出 0”,依次选择“输出列”、“添加列”。
在“名称”属性中,输入“ErrorDescription”并将“DataType”属性设置为“Unicode 字符串 [DT_WSTR]”。
在“脚本”页中,验证是否已将“LocaleID”属性设置为“英语(美国)” 。
选择“编辑脚本”打开 Microsoft Visual Studio Tools for Applications (VSTA)。 在“Input0_ProcessInputRow”方法中,键入或粘贴以下代码:
[Visual Basic]
Row.ErrorDescription = Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)
[Visual C#]
Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);
已完成的子例程如以下代码所示:
[Visual Basic]
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) Row.ErrorDescription = Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode) End Sub
[Visual C#]
public override void Input0_ProcessInputRow(Input0Buffer Row) { Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode); }
在“生成”菜单上,选择“生成解决方案”,生成脚本并保存所做的更改,然后关闭 VSTA。
单击“确定”,关闭“脚本转换编辑器”对话框。