SSIS - 无法将值null插入列

时间:2012-11-20 17:16:04

标签: ssis

我之前看到过这个错误,但是通过手动输入值来解决这个问题,但那是4行,这次错误超过100行。

问题是,此列名为Shipto,其中包含三个内容之一,1位数字,2位数字或单词All。导入对于1位和2位数字完全正常,但是当它有All时会导致此错误:

  

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

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

唯一的区别是看两个表的结构。临时表允许该列上的空值,而真实表则不允许。两个表都将列作为varchar(20)

我在数据流中注意到有一个复选框显示check constraints;会不会检查这个问题解决了吗?因为该列不为null。

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

1 个答案:

答案 0 :(得分:5)

有几种可能性:

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

    SELECT field1,field2,isnull(shipto,'')field3,field4,.... 从表

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

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

    < / LI>
  2. 字段已取消映射。源中的值未映射到目标字段。

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