Sql server 具有数值的SSIS查找不起作用

Sql server 具有数值的SSIS查找不起作用,sql-server,oracle,ssis,Sql Server,Oracle,Ssis,我刚开始使用ssis,现在正在使用第三个软件包。我们正在将Oracle中的数据导入Sql Server。在我的oracle表中,唯一键称为recnum,是数字键(12,0)。在这个特定的包中,我试图从oracle获取记录,在sql server表中查找以查看是否找到唯一的键,如果没有,则将记录添加到sql server表中。我的问题是它找不到匹配的。经过多次测试,我想出了以下有效的方法。但我不明白我为什么要这么做 我目前的工作方式: 我从oracle获取数据。在下一步中,我添加了一个使用orac

我刚开始使用ssis,现在正在使用第三个软件包。我们正在将Oracle中的数据导入Sql Server。在我的oracle表中,唯一键称为recnum,是数字键(12,0)。在这个特定的包中,我试图从oracle获取记录,在sql server表中查找以查看是否找到唯一的键,如果没有,则将记录添加到sql server表中。我的问题是它找不到匹配的。经过多次测试,我想出了以下有效的方法。但我不明白我为什么要这么做

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


我们已经在另一个表上完成了这项工作,其中唯一键是数字(8,0),它可以正常工作,而不需要派生列。

SSIS对数据类型非常挑剔,只有在数据类型匹配的情况下,查找才能很好地工作

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


希望这有帮助。

SQL Server表中的数据列数据类型是什么?我将其设置为数字(12,0)。我最初将其设置为太大,并认为这可能是问题所在。所以我纠正了它。但同样的问题让人感到奇怪。尝试比较SSM中的值。创建一个链接服务器对象到您的Oracle box,然后
内部连接
您的SQL Server表到
从OPENQUERY选择*(Oracle\u链接的\u服务器\u名称,'SELECT*FROM source\u table')
。在我读到这篇文章之前,我把所有的头发都拔了出来,回头看,发现一列是十进制的(9,3),另一列是十进制的(10,3)。将它们更改为匹配类型,一切正常。现在我秃顶了,但至少SSIS包在工作。