Drivers

在同一台機器上安裝 32 位和 64 位 Informix 驅動程序

  • August 9, 2017

目前正在嘗試設置一個可以處理 32 位和 64 位 ODBC Informix 驅動程序的開發環境。

我沒有成功找到任何類型的指南或線上瀏覽,但我確實找到了可能導致解決方案的點點滴滴。我只是想要更多的建議,以確保我走在正確的道路上。

驅動程序版本

版本 3.70.TC3,Windows(32 位)

版本 3.70.FC3,Windows x64

來源

我似乎找不到3.70.TC33.70.FC3版本,但我確實直接從 IBM 網站找到了 3.70.TC73.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 位版本時,我收到以下錯誤。

64 位 ODBC 管理器 - 錯誤 193

如何將系統目前的 ODBC 管理器更改為 64 位版本以避免此錯誤?

問題是我最初安裝的是 3.50 版本。此版本不再受支持,也沒有 64 位對應版本。

解決方案是安裝最新的 4.1 驅動程序。

引用自:https://serverfault.com/questions/865353