【发布时间】:2012-11-08 19:58:22
【问题描述】:
我以前见过这个错误,但是通过手动输入值来解决它,但那是 4 行,这次这个错误发生在 100 多行。
问题是,这个名为Shipto 的列将包含以下三种内容之一:1 位数字、2 位数字或单词All。导入对于 1 位和 2 位数字非常有效,但是当它有 All 时会导致此错误:
[SSIS.Pipeline] 错误:SSIS 错误代码 DTS_E_PROCESSINPUTFAILED。这 组件“OLE DB 目标”(162) 上的 ProcessInput 方法失败 处理输入“OLE DB 目标”时出现错误代码 0xC0202009 输入” (175)。已识别的组件从 ProcessInput 方法。该错误是特定于组件的,但 错误是致命的,将导致数据流任务停止运行。 在此之前可能会发布带有更多信息的错误消息 关于失败。
这个包从一个表中获取值并将它们插入到另一个表中。我查看了它将从中获取值的表,shipto 列不为空。
唯一的区别在于两个表的结构。临时表允许该列上的空值,而实际表不允许。两个表的列都是varchar(20)。
我注意到在数据流中有一个复选框,上面写着check constraints;取消选中这个可以解决这个问题吗?因为该列不为空。
感谢您提供的任何帮助,我会发布任何可能需要的其他信息。谢谢。
【问题讨论】:
-
“在此之前可能会发布错误消息,其中包含有关失败的更多信息” 还有其他消息吗?通常有。我见过的大多数问题通常与数据类型不匹配有关。
-
在您分享的错误消息中,我没有看到它提到的问题是空值。如果目标表不允许空值,取消选中 ETL 包上的检查约束将无法解决问题。您确定源数据中的任何行在该列中都不存在空值吗?
-
@Samuel 没有其他错误。数据类型相同,这就是我对此感到困惑的原因。
-
@STLRick 我现在正在查看表格,并且在 ShipTo 列中没有一行具有 NULL 值。我不明白填充列是如何作为空值传递的。
-
只是问了个愚蠢的问题,在目的地的映射选项卡中,您是否将源值之一映射到了目标列中以供 Shipto 使用?如果源数据中没有 NULL 值,并且您确信这是一个 NULL 问题,那么这是我能想到的唯一其他事情。
标签: ssis