目前正试图设置一个可以同时处理32位和64位ODBC Informix驱动程序的开发环境。
我没有find任何types的指导或通过网上走,但我确实发现可能导致解决scheme的点点滴滴。 我只是想多一点build议,以确保我在正确的道路上。
驱动程序版本
版本3.70.TC3,Windows(32位)
- 如何获得安装在服务器上的Windows打印机驱动程序列表
- 怎么办“SCSIPressurePathManager:新的活动path可用”错误?
- poolmon.exe:32位版本
- 如何阻止hpboid.exe和hpbpro.exe在我的服务器上运行很多次?
- 使用ATI Rage XL从Centos3升级到Centos5后出现X11性能问题
版本3.70.FC3,Windows x64
资源
我似乎无法find版本3.70.TC3或3.70.FC3 ,但我直接从IBM网站上find3.70.TC7和3.70.FC7 ,我认为它只是稍微更新的版本。
Informix驱动程序安装
驱动程序安装在以下位置(基于registry项)
registry项
从我可以看到,驱动程序的registry项位于:
这基本上列出了所有的数据源及其连接细节。 两个位置具有相同数量的具有相同名称和相同键/值对的数据源,除了指向其各自驾驶员位置的Driver键之外; C:\Program Files\或C:\Program Files (x86)\ 。
ODBCpipe理员
在%systemdrive%/ Windows / SysWoW64 /odbcad32.exe中find32位ODBCpipe理员
反直觉地,在%systemdrive%/ Windows / System32 /odbcad32.exe中find64位ODBCpipe理员
资源
ODBC.INI
ODBC.INI文件位于C:\Windows\ ,其中该文件的内容列出了与ODBCpipe理器中显示的相同的数据源,并且包含每个数据源的32位驱动程序的键/值对; Driver32=C:\Program Files\IBM\Informix\Client-SDK\bin\iclit09b.dll 。
现在有趣的是,尽pipe使用了Driver32这个关键字,但是这个值指向了C:\Program Files\path,而不是C:\Program Files (x86)\path,从而将Driver32与64位驱动程序。
我发现下面的页面来解释这个不规范。
WOW64registryredirect器拦截对registry某些部分的调用,并将其redirect到registry的另一部分。 registryredirect会影响HKEY_LOCAL_MACHINE \ SOFTWARE密钥。 由32位应用程序对此键进行的registry调用被redirect到HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node。 因此,例如,当一个32位应用程序调用SQLDataSources时,结果registry调用从HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBC.INIredirect到HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ ODBC \ ODBC.INI,唯一的系统数据源返回的是32位的ODBC驱动程序。
简而言之,连接到64位ODBC驱动程序的32位应用程序将自动根据registry项redirect到32位驱动程序,而64位应用程序则不需要这样的redirect。
如果32位应用程序尝试连接到64位ODBC驱动程序的有效用户数据源,则连接将成功,如果安装了32位版本的驱动程序。 否则,连接将会失败,并显示“架构不匹配”错误。 例如,Microsoft的SQL Server ODBC驱动程序在64位Windows平台上安装 64位库(%WINDIR%\ System32 \ sqlsrv32.dll)和32位库(%WINDIR%\ SysWOW64 \ sqlsrv32.dll)。
对于Informix,每个体系结构的驱动必须单独安装。
什么是ODBC.INI文件的重要性,我可以简单地修改驱动程序的Driver32关键或可能有两个结合?
当执行32位ODBCpipe理员并打开数据源时,我可以修改连接设置,但是当执行64位版本时,我收到以下错误。
如何将系统当前的ODBCpipe理员更改为64位版本以避免此错误?
问题是我最初安装了3.50版本。 此版本不再支持,也没有64位对应。
决议是安装最新的4.1驱动程序。