Установка 32-битных и 64-битных драйверов Informix на одном компьютере
В настоящее время пытаюсь настроить среду разработки, которая может обрабатывать как 32-разрядные, так и 64-разрядные драйверы ODBC Informix.
Мне не удалось найти какой-либо путеводитель или пройтись по интернету, однако я все же нашел кусочки, которые могли бы привести к решению. Я просто хотел бы еще немного советов, чтобы убедиться, что я на правильном пути.
Версии драйверов
Версия 3.70.TC3, Windows (32 бит)
Версия 3.70.FC3, Windows x64
Кажется, я не могу найти версии 3.70.TC3 или 3.70.FC3, но я нашел 3.70.TC7 и 3.70.FC7 непосредственно на веб-сайте IBM, который, я полагаю, является лишь слегка обновленной версией.
Установки драйверов 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 Administrator, и включает пару ключ / значение 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.
Проще говоря, 32-разрядное приложение, которое подключается к 64-разрядным драйверам ODBC, будет автоматически перенаправлено на 32-разрядные драйверы на основе записей реестра, тогда как 64-разрядное приложение не будет нуждаться в таком перенаправлении.
Если 32-разрядное приложение пытается подключиться к действительному источнику пользовательских данных для 64-разрядного драйвера ODBC, подключение будет установлено успешно, если установлена 32-разрядная версия драйвера. В противном случае соединение не будет выполнено с ошибкой "несоответствие архитектуры". Например, драйвер ODBC для SQL Server от Microsoft устанавливает 64-разрядную библиотеку (%WINDIR%\System32\sqlsrv32.dll) и 32-разрядную библиотеку (%WINDIR%\SysWOW64\sqlsrv32.dll) на 64-разрядных платформах Windows.
В случае Informix драйвер для каждой архитектуры ДОЛЖЕН быть установлен отдельно.
Вопросы
Какова важность ODBC.INI
файл, и я могу просто изменить Driver32
ключ к Driver64
или может быть и то и другое вместе?
При выполнении 32-разрядного администратора ODBC и открытии источника данных я могу изменить параметры подключения, однако при выполнении 64-разрядной версии появляется следующая ошибка.
Как я могу изменить текущий системный администратор ODBC на 64-разрядную версию, чтобы избежать этой ошибки?
1 ответ
Проблема заключалась в том, что я изначально установил версию 3.50. Эта версия больше не поддерживается и также не имеет 64-битного аналога.
Было принято решение установить последние версии драйверов 4.1.