我们刚刚建立了一个新的 SQL Server 2008 数据库,我在我们的服务器和我们从中获取一些数据的 iSeries As400 服务器之间建立了链接。
我遇到的问题是它正在四舍五入任何浮动数字,这很痛苦,因为我们很多时候都在处理美元金额。
select * FROM openquery(NADS, 'select CMD, 1.23 Type from CREDD')
在我们的旧服务器上,这将返回 CMD 列,以及一个名为 Type 的列,一直到 1.23。在新的服务器类型上只有 1.00
据我所知,链接部分设置相同。IBM i Access for Windows ODBC Setup 基本相同,但我不确定版本之间存在一些差异。
编辑:如果重要的话,对于我使用 Microsoft OLE DB Provider for ODBC Drivers 的提供程序
编辑2:
提供者选项相同
链接服务器属性:
iSeries Access for windows ODBC 设置似乎相同
弄清楚了!!
显然我们没有安装最新的服务包。我们必须安装 64 位版本的服务包(32 位版本安装失败),当它完成时,十进制数字出现了。
如果有人想知道:
我们正在使用“IBM iAccess for Windows 7.1 (07.01.0800) (64bit)”并使用“Microsoft OLE DB Provider for ODBC Drivers”作为链接服务器 sql 驱动程序。
看到我又遇到了这个问题,又不得不再次寻找服务包,这里是服务包下载页面的链接,这样几年后我再次遇到这个问题时,我会发现它更容易.. .
http://www-03.ibm.com/systems/power/software/i/access/windows_sp.html
解决方案很简单:让 AS400 转换浮点值,因为 iSeries 提供程序应用的隐式转换几乎每次都失败。所以,非常简单:
这样一切正常:1.23 也将在 Sql Server 中浮动