尽管记录匹配正确,但 SSIS 查找失败

SSIS Lookup fails eventhough record match is correct

错误信息:

Reason: Fail - Row yielded no match during lookup. SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "LKP Staging and Location" failed because error code 0xC020901E occurred, and the error row disposition on "LKP Staging and Location.Outputs[Lookup Match Output]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure. SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "LKP Staging and Location" (2) failed with error code 0xC0209029 while processing input "Lookup Input" (16). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.

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

中获取标识值

所以数据是一样的,但我不确定为什么会失败。如果没有匹配项,我将无法完成任务。由于相同的数据存储在两个 table 中,它应该匹配吗?

程序包在开发数据库中成功运行,但同一个程序包未在 SIT 数据库中运行。

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

有什么建议吗?

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

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

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

在我的例子中,这仅仅是因为我从查找组件连接了 "No match output" 并且没有在常规部分设置为 "Redirect rows to no match output"。