1

我以前见过这个错误,但是通过手动输入值来解决它,但那是 4 行,这次这个错误发生在 100 多行。

问题是,这个名为Shiptoit 的列将包含以下三种内容之一:1 位数字、2 位数字或单词All。导入对于 1 位和 2 位数字非常有效,但是当它出现All时会导致此错误:

[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。处理输入“OLE DB 目标输入”(175) 时,组件“OLE DB 目标”(162) 上的 ProcessInput 方法失败,错误代码为 0xC0202009。已识别的组件从 ProcessInput 方法返回错误。该错误是特定于组件的,但该错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

这个包从一个表中获取值并将它们插入到另一个表中。我查看了将从中获取值的表,并且该列shipto不为空。

唯一的区别在于这两个表的结构。临时表允许该列上的空值,而实际表不允许。两个表的列都是varchar(20).

我注意到在数据流中有一个复选框,上面写着check constraints;取消选中这个可以解决这个问题吗?因为该列不为空。

感谢您提供的任何帮助,我将发布可能需要的任何其他信息。谢谢你。

4

1 回答 1

6

有几种可能性:

  1. 您的源表中有一个空值。您的目标表不允许该列中有空值。有几个选择。如果您直接使用表中的数据源,请改用 SQL 命令并在查询中处理 null:

    SELECT field1, field2, isnull(shipto, '') field3, field4, .... FROM Table

    您可以在上面的空字符串中使用您想要的任何内容,将空值替换为更可接受的值。

    如果您不想这样做,则必须在目标数据库中允许空值,或者找出源数据库表中存在空值的原因并确保不再发生这种情况。

  2. 字段未映射。您在源中有未映射到目标字段的值。

  3. 源和目标之间的其他转换正在引入 NULL 值。

于 2012-11-20T17:35:56.047 回答