我们刚刚建立了一个新的Server 2008数据库,我在服务器和iSeries As400服务器之间建立了链接,我们从该链接中获取了一些数据。
我遇到的问题是,它正在舍入任何浮动数字,这是一个痛苦的问题,因为我们很多时候都在使用美元金额。
select * FROM openquery(NADS, 'select CMD, 1.23 Type from CREDD')
在我们的旧服务器上,这将返回CMD列,并返回一个名为Type的列,该列自始至终都是1.23。在新服务器上,类型仅为1.00
据我所知,链接部分的设置是相同的。IBM访问Windows的设置基本上是相同的,但是不同版本之间有一些差异,我不确定。
编辑:如果这很重要,对于提供程序,我使用Microsoft提供程序作为ODBC驱动程序
Edit2:
提供程序选项相同。
链接服务器属性:
windows设置的iSeries访问似乎是相同的。
发布于 2013-11-14 18:30:22
弄明白了!!
显然我们没有安装最新的服务包。我们必须安装服务包的64位版本(32位版本安装失败),当它完成时,小数出现了。
万一有人想知道:
我们使用的是“IBMOLEDBProviderforODBsforODB7.1 (07.01.0800) (64位)”和“驱动程序”作为链接服务器iAccess驱动程序。
鉴于我刚刚再次遇到这个问题,不得不再次查找服务包,下面是指向service pack下载页面的链接,所以几年后,当我再次遇到这个问题时,我会发现它更容易.
http://www-03.ibm.com/systems/power/software/i/access/windows_sp.html
发布于 2018-09-25 13:44:08
解决方案很简单:让AS400转换浮点中的值,因为iSeries提供程序应用的隐式转换几乎每次都失败。所以,非常简单:
select * FROM openquery(NADS, 'select CMD, cast(1.23 as float) Type from CREDD')
通过这种方式,所有的工作都很好: 1.23也将在Server中浮动
https://dba.stackexchange.com/questions/53282
复制相似问题