带有数值的 SSIS 查找不起作用

Posted

技术标签:

【中文标题】带有数值的 SSIS 查找不起作用【英文标题】:SSIS lookup with numeric value not working 【发布时间】:2017-02-08 12:52:03 【问题描述】:

我是使用 ssis 的新手,并且正在使用我的第三个包。我们正在将数据从 Oracle 导入 Sql Server。在我的 oracle 表上,唯一键称为 recnum 并且是 numeric(12,0)。在这个特定的包中,我试图从 oracle 中获取记录,在 sql server 表中查找以查看是否找到了该唯一键,如果没有将记录添加到 sql server 表中。我的问题是找不到匹配项。经过大量测试,我想出了以下有效的方法。但我不明白为什么我必须这样做。

我目前的工作方式: 我从 oracle 获取数据。在下一步中,我添加了一个使用 oracle 列的派生列。 (表达式只是那个字段,没有其他格式。)然后在查找中,我使用派生列而不是 Oracle 中的列。

我们已经在另一个唯一键为数字 (8,0) 的表上完成了此操作,并且无需派生列即可正常工作。

【问题讨论】:

你的 SQL Server 表中的数据列数据类型是什么? 我将其设为 Numeric(12,0) 我最初将其设为太大,并认为这可能是问题所在。所以我纠正了它。但还是同样的问题 听起来很奇怪。尝试比较 SSMS 中的值。创建一个链接服务器对象到您的 Oracle 框,然后 INNER JOIN 您的 SQL Server 表到 SELECT * FROM OPENQUERY(Oracle_Linked_Server_Name, 'SELECT * FROM source_table') 【参考方案1】:

SSIS 对数据类型非常挑剔,只有当数据类型匹配时,查找才能很好地工作。

双击数据流对象之间的数据路径行以检查数据类型。我在使用查找时使用数据转换任务或 CAST 语句来强制匹配数据类型。

希望这会有所帮助。

【讨论】:

把我所有的头发都拉了出来,直到我读到这篇文章,回头看了看,发现一列是十进制(9,3),另一列是十进制(10,3)。将它们更改为匹配类型,一切正常。现在我光头了,但至少 SSIS 包正在工作。

以上是关于带有数值的 SSIS 查找不起作用的主要内容,如果未能解决你的问题,请参考以下文章

通过 Windows 任务计划程序调用 SSIS 包时,发送邮件任务在 SSIS 中不起作用

SSIS 包在服务器上不起作用

带有转义字符的jQuery查找功能在最新版本中不起作用

生成 HTML 响应的存储过程不起作用

用于在链接服务器上执行 DDL 语句的 Powershell 脚本 - 使用 SSIS 运行时不起作用

在 Windows 上打印带有 end='\r' 的行似乎不起作用? [复制]