记录匹配正确后,SSIS查找失败

时间:2015-01-07 13:13:46

标签: ssis ssis-2012

错误消息:

  

原因:失败 - 行在查找期间未产生匹配。 SSIS错误代码DTS_E_INDUCEDTRANSFORMFAILUREONERROR。 “LKP Staging and Location”失败,因为发生错误代码0xC020901E,并且“LKP Staging and Location.Outputs [Lookup Match Output]”上的错误行处理指定错误失败。指定组件的指定对象发生错误。在此之前可能会发布错误消息,其中包含有关失败的更多信息。 SSIS错误代码DTS_E_PROCESSINPUTFAILED。组件“LKP Staging and Location”(2)上的ProcessInput方法在处理输入“Lookup Input”(16)时失败,错误代码为0xC0209029。标识的组件从ProcessInput方法返回错误。该错误特定于组件,但错误是致命的,将导致数据流任务停止运行。在此之前可能会发布错误消息,其中包含有关失败的更多信息。

我正在从Excel读取数据并将其存储到Statging表中。通过使用查找将相同的数据存储到名为Location.Now的另一个表中,我匹配两个数据并尝试从Location表中获取标识值。

所以数据是一样的,但我不确定它为什么会失败。如果没有匹配,我就失败了。由于相同的数据存储在两个表中,它应该匹配吗?

软件包在开发DB中成功运行,但是在SIT DB中没有运行相同的软件包。

在Dev中,我正在使用SQL身份验证和SIT Windows身份验证。

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

经过几次分析后,我自己找到了答案。 这里有两点需要注意, 即使两个表中的值相同,如果数据类型不同(第一个表中的char和第二个表中的varchar),也会抛出错误,表示不匹配。

在查找属性中,将validate metadata设置为false。因为它也在验证元数据。如果您确定两个表结构都是同步的,则应该这样做。

以上2项检查已解决了我的问题。

答案 1 :(得分:1)

在我的情况下,这仅仅是因为我连接了查找组件的“无匹配输出”,并且在“常规”部分中未设置为“将行重定向到无匹配输出”。