带有数值的 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 中不起作用