在同一台機器上安裝 32 位和 64 位 Informix 驅動程序
目前正在嘗試設置一個可以處理 32 位和 64 位 ODBC Informix 驅動程序的開發環境。
我沒有成功找到任何類型的指南或線上瀏覽,但我確實找到了可能導致解決方案的點點滴滴。我只是想要更多的建議,以確保我走在正確的道路上。
驅動程序版本
版本 3.70.TC3,Windows(32 位)
版本 3.70.FC3,Windows x64
我似乎找不到3.70.TC3或3.70.FC3版本,但我確實直接從 IBM 網站找到了 3.70.TC7和3.70.FC7,我認為這只是稍微更新的版本。
Informix 驅動程序安裝
驅動程序安裝在以下位置*(基於系統資料庫項)*
- 32 位:C:\Program Files (x86)\IBM\Informix\Client-SDK\
- 64 位:C:\Program Files\IBM\Informix\Client-SDK\
系統資料庫項
據我所知,驅動程序的系統資料庫項位於:
- 32 位:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI
- 64 位:HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI
這基本上列出了所有數據源及其連接詳細資訊。兩個位置具有相同數量的具有相同名稱和相同鍵/值對的數據源,但
Driver
指向其各自驅動程序位置的鍵除外;C:\Program Files\
或C:\Program Files (x86)\
。ODBC 管理員
32 位 ODBC 管理器位於 %systemdrive%/Windows/ SysWoW64 /odbcad32.exe
與直覺相反,64 位 ODBC 管理器位於 %systemdrive%/Windows/ System32 /odbcad32.exe
ODBC.INI
該
ODBC.INI
文件位於該文件C:\Windows\
的內容列出與 ODBC 管理器中顯示的數據源相同的數據源的位置,並包括每個數據源的 32 位驅動程序的鍵/值對;Driver32=C:\Program Files\IBM\Informix\Client-SDK\bin\iclit09b.dll
.現在有趣的是,雖然
Driver32
使用了鍵,但值指向C:\Program Files\
路徑而不是C:\Program Files (x86)\
路徑,從而將Driver32
與 64 位驅動程序相關聯。我找到了以下頁面來解釋這種不規則性。
WOW64 系統資料庫重定向器攔截對系統資料庫某些部分的呼叫,並將它們重定向到系統資料庫的另一部分。系統資料庫重定向會影響 HKEY_LOCAL_MACHINE\SOFTWARE 鍵。**32 位應用程序對該鍵的系統資料庫呼叫被重定向到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node。**因此,例如,當 32 位應用程序呼叫 SQLDataSources 時,生成的系統資料庫呼叫將從 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI 重定向到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI,並且唯一的系統數據源返回的是 32 位 ODBC 驅動程序。
簡單地說,連接到 64 位 ODBC 驅動程序的 32 位應用程序將根據系統資料庫項自動重定向到 32 位驅動程序,而 64 位應用程序則不需要這種重定向。
如果 32 位應用程序嘗試連接到 64 位 ODBC 驅動程序的有效使用者數據源,則如果安裝了 32 位版本的驅動程序,則連接將成功。否則,連接將失敗並出現“架構不匹配”錯誤。例如,Microsoft 的 SQL Server ODBC 驅動程序在 64 位 Windows 平台上同時安裝 64 位庫 (%WINDIR%\System32\sqlsrv32.dll) 和 32 位庫 (%WINDIR%\SysWOW64\sqlsrv32.dll)。
對於 Informix,必須單獨安裝每個體系結構的驅動程序。
問題
該文件的重要性是什麼
ODBC.INI
,我可以簡單地修改Driver32
密鑰Driver64
或將兩者結合使用嗎?執行 32 位 ODBC 管理器並打開數據源時,我可以修改連接設置,但是在執行 64 位版本時,我收到以下錯誤。
如何將系統目前的 ODBC 管理器更改為 64 位版本以避免此錯誤?
問題是我最初安裝的是 3.50 版本。此版本不再受支持,也沒有 64 位對應版本。
解決方案是安裝最新的 4.1 驅動程序。