Назад | Перейти на главную страницу

Установка 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

Драйверы установлены в следующих местах (на основе записей реестра)

Записи в реестре

Насколько я могу судить, записи реестра для драйверов расположены по адресу:

По сути, здесь перечислены все источники данных и детали их подключения. Оба расположения имеют одинаковое количество источников данных с одинаковыми именами и одинаковыми парами ключ / значение, за исключением 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 Microsoft SQL Server устанавливает оба 64-битная библиотека (% WINDIR% \ System32 \ sqlsrv32.dll) и 32-битная библиотека (% WINDIR% \ SysWOW64 \ sqlsrv32.dll) на 64-битных платформах Windows.

В случае Informix драйвер для каждой архитектуры ДОЛЖЕН быть установлен отдельно.

Вопросы

В чем важность ODBC.INI файл, и могу ли я просто изменить Driver32 ключ к Driver64 а может быть и то, и другое вместе?

При запуске 32-разрядного администратора ODBC и открытии источника данных я могу изменить параметры подключения, однако при выполнении 64-разрядной версии я получаю следующую ошибку.

Как я могу изменить текущий системный администратор ODBC на 64-разрядную версию, чтобы избежать этой ошибки?

Проблема заключалась в том, что я изначально установил версию 3.50. Эта версия больше не поддерживается и также не имеет 64-битного аналога.

Решением было установить последние версии драйверов 4.1.