我之前看到过这个错误,但是通过手动输入值来解决这个问题,但那是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。
感谢您提供的任何帮助,我将发布可能需要的任何其他信息。谢谢。
答案 0 :(得分:5)
有几种可能性:
源表中有一个null。目标表不允许该列中的空值。有几种选择。如果您直接从表中使用数据源,请使用SQL命令而在查询中处理null:
SELECT field1,field2,isnull(shipto,'')field3,field4,.... 从表
您可以在上面的空字符串中使用您想要的任何内容,以使用更可接受的值替换空值。
如果您不想这样做,您将不得不在目标数据库中允许空值,或者找出源数据库表中存在空值的原因,并确保不再发生这种情况。
< / LI>字段已取消映射。源中的值未映射到目标字段。
源和目标之间的其他转换正在引入NULL值。