32-разрядный драйвер ODBC для подключения к 64-разрядной базе данных

Чтобы подключиться к 64-разрядной базе данных (Oracle / DB2 / Postgresql / SQL Server) из 32-разрядного программного обеспечения через ODBC, нужен ли мне 32-разрядный клиент базы данных или достаточно 32-разрядного драйвера ODBC.

В качестве примера из Oracle: когда я устанавливаю Oracle Server, 32-разрядный администратор ODBC не обязательно имеет запись для Oracle, поскольку 32-разрядный драйвер ODBC не существует. Чтобы подключиться, мне пришлось установить 32-битный клиент Oracle, после чего я могу увидеть запись ODBC.

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


person Abhijit    schedule 06.06.2014    source источник


Ответы (3)


Какой клиент вы используете, зависит от архитектуры используемого вами клиентского компьютера, а не от сервера.

IIRC, с Oracle вам необходимо установить клиент И драйвер ODBC. Клиент фактически обрабатывает соединение с базой данных, в то время как уровень ODBC переводит ODBC-talk в то, что понимает клиент.

Я предполагаю, что другие платформы похожи, хотя возможно, что некоторые базы данных предоставляют унифицированный установщик клиента, который может устанавливать как клиент, так и драйвер ODBC.

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

person Baldy    schedule 06.06.2014
comment
Хотя я понял суть вашего ответа, но, возможно, мне придется не согласиться с вашим утверждением is dependent on the architecture of the client machine. Например, 32-битный клиент может быть установлен на 64-битный компьютер. Кроме того, если вы можете получить более подробную информацию о своем ответе (например, ссылки), это того стоит. - person Abhijit; 06.06.2014
comment
@Abhijit, вы правы, но исходный вопрос заключался в том, определяет ли архитектура сервера, какой клиент должен быть установлен. Как только вы начнете говорить об ODBC, правильный ответ, скорее всего, будет больше зависеть от приложения, использующего ODBC. - person Baldy; 07.06.2014
comment
Я думаю, что суть вопроса OPs in order to connect to a 64 bit database from a 32 bit application, do I need the 32 bit database client (thin/full) or just there exist a 32 bit ODBC driver which can be installed to establish a connection. - person Abhijit; 07.06.2014
comment
Ответ правильный. Если соответствующая версия драйвера доступна в 32- и 64-битной версиях, лучше всего будет соответствовать режиму клиента, в котором вы запускаете драйвер. Но убедитесь, что ваш драйвер поддерживает версию программного обеспечения вашего сервера. Например, не пытайтесь использовать драйвер для DB2 LUW 9.1, если вы подключаетесь к серверу, на котором работает DB2 LUW 10.1. - person WarrenT; 07.06.2014

Когда я настраиваю SQL Linked Server на Oracle, я установил:

  • Помощник по настройке сети
  • Сетевой менеджер
  • Драйвер ODBC
  • Драйвер OLE

Архитектура драйвера должна соответствовать архитектуре машины. В моем случае это был 64-битный Windows Server, поэтому я использовал 64-битный драйвер (win64_11gR2_client.zip).

Затем я запустил Net Config. Помощник и настройте конфигурацию оракула (хост / порт / пользователь / пароль / имя службы). Убедитесь, что вы прошли здесь проверку подключения. Это настроит ваш файл tnsnames.ora (% path% \ product \ 11.2.0 \ client_1 \ network \ admin \ tnsnames.ora)

Если не удается подключиться, загляните в файл sqlnet.ora. Мне пришлось изменить свое, чтобы читать SQLNET.AUTHENTICATION_SERVICES= (NONE), прежде чем я смог успешно подключиться.

Затем я запустил ODBC для настройки системного DSN, используя настройку того же имени в Net Config. Ассистент.

person Dave Cullum    schedule 06.06.2014
comment
In my case it was 64bit Windows Server, so I used the 64-bit driver, значит, вы говорите, что 32-битный драйвер не может быть установлен на 64-битный компьютер? Я подумал, что драйверы ODBC, не являющиеся драйверами ядра, не имеют ограничений. - person Abhijit; 07.06.2014
comment
Я думаю, вы можете, они просто будут отображаться на 32-битной панели odbc вместо основной панели odbc на 64-битной машине. Я чувствую вашу боль по этому поводу, настройка oracle заняла у меня часы, а многочисленные установки / удаления я пробовал 32-битные и 64-битные версии. Если вы все-таки завершите удаление, существует деинсталлятор, предоставленный Oracle - настоятельно рекомендую загрузить - не используйте просто значок добавления / удаления на панели управления - он оставляет вещи повсюду. - person Dave Cullum; 07.06.2014
comment
fyi деинсталлятор - win64_11gR2_deinstall.zip, он находится на сайте Oracle. - person Dave Cullum; 07.06.2014

Следующее верно для Oracle, я не знаю, применимо ли все это и к другим СУБД.

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

Однако архитектура ODBC-Driver и Oracle Client должна совпадать, т.е. 32-битный драйвер ODBC работает только с 32-битным Oracle Client, 64-битный драйвер ODBC требует 64-битного Oracle Client. Это ограничение распространяется также на других поставщиков, таких как OLE DB или ODP.

Конечно, 64-битный клиент Oracle требует 64-битной Windows. Установить 32-битный клиент Oracle на 64-битную Windows не составит труда.

Также возможно установить как 32-битный, так и 64-битный клиент Oracle (и, следовательно, обе архитектуры драйверов ODBC) на одном компьютере. Однако вам придется проделать несколько "уловок", чтобы они оба работали безупречно.

person Wernfried Domscheit    schedule 07.06.2014