是否可以将行ID传递给SSIS中的错误输出?

问题描述

我有一个平面文件,其中的行具有guid形式的ID。我需要将错误输出重定向到具有错误行ID,错误列和错误代码的表。问题是我只能映射“ Flat File Source Error Output Column”,这是其他一些列的串联。有没有一种方法可以获取错误行的ID列值?我能找到的最佳解决方案是添加计数器,该计数器将给出行号,但这并不是我真正需要的,因为id是我的情况下的字符串。

解决方法

不。您可以从平面文件源组件的3 * 列:平面文件源错误输出列,ErrorCode,ErrorColumn。

Source组件定义该点“下游”的所有行缓冲区将包含的列。它负责添加行,然后在新行缓冲区中填充列。

“平面文件源”组件具有一个合同,描述了应如何使用源数据-如此多的列,此定界符(或如此之多的字符)等。

当某些内容超出长度,或者数据类型不兼容或者不是所有分隔符都出现时,会发生什么?设计决定是将不完整的行放入管道中(但是然后如何确定填充哪些列-从左到右填充?类型不匹配呢?)或将其视为错误。通常,这会炸毁数据流,但如果添加错误输出路径,则可以看到哪一行失败。 该行是平面文件用作输入的原子单位。

Read line -> Parse -> Write to Output [or Error] buffer {loop}

然后,您可以使用脚本任务尝试从“平面文件源错误输出列”中解析出GUID,但随后您必须希望该值在行中。可能是一列具有未转义的嵌入式定界符,有人使用错误的编码/行尾等传输了文件。

* 平面文件源组件确实在高级编辑器中公开了一个属性,即FileNameColumnName的“组件属性”选项卡,该属性也会显示在“错误”输出路径中,但这是唯一的这种行为我知道的源组件。