Возможно ли иметь 32-битное соединение ODBC в Windows 10 без файла tnsnames.ora? - PullRequest
0 голосов
/ 04 октября 2019

У меня есть макрос VBA (Excel), который подключается к базе данных Oracle и запрашивает ее. Работая под Windows 7, работает следующая строка подключения:

Driver={Microsoft ODBC for Oracle}; Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=xxx))(CONNECT_DATA=(SERVICE_NAME=name))); Uid=username;Pwd=password;

Я и остальные пользователи этого шаблона Excel переходят на Windows 10 (64-разрядная версия) с 32-разрядной версией Office 365. Что яНапример, эта строка подключения не требует отдельного файла tnsnames.ora - функции, которую я хотел бы сохранить. Я также знаю, что драйверы Microsoft устарели (и все равно не работают), поэтому пришло время изменить их.

У меня установлено следующее:

  • Oracle Instant Client 12.2 (32 бита)
  • Драйверы Oracle ODBC для Instant Client 12.2 (32 бита)
  • Visual Studio 2019 (32-разрядная версия) (при условии, что драйверы Oracle совместимы с прямой пересылкой)

Я проверил, что:

  • первое значение в PATH установлено накаталог, в котором установлен Instant Client 12.2
  • ORACLE_HOME настроен на тот же каталог
  • есть только одна переменная ORACLE_HOME
  • Драйвер (Oracle в instantclient_12_2) виден в32-битный инструмент администрирования ODBC

Я пробовал различные изменения в следующей строке подключения, но безуспешно

Driver={Oracle in instantclient_12_2}; Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxx.xxx.xxx.xxx)(PORT=xxx))(CONNECT_DATA=(SID=name))); Uid=username;Pwd=password

Я пытался использовать "Источник данных" вместо«Сервер», «SERVICE_NAME» вместо «SID», и оба одновременно. Я также попробовал строку во внутреннем соединении ODBC в Excel 365. Я получаю сообщение об ошибке:

ORA-12560: TNS: ошибка адаптера протокола

Я начинаю подозревать, что необходим файл tnsname.oraпод Windows 10. Можно ли создать 32-разрядное соединение OBDC для Windows 10 без использования файла tnsnames.ora или каких-либо других действий, кроме установки драйверов Oracle на компьютер пользователя?

Редактировать: я создал удаленно доступный файл tnsnames. Когда строка подключения использует этот файл и установлена ​​переменная среды TNS_ADMIN, она подключается. Если я использую точный текст из файла tnsnames в самом VBA, он не распознает его (ошибка адаптера TNS). Я собираюсь предположить, что мое подозрение относительно драйверов Oracle, требующих файла tnsnames.ora, верно, по крайней мере для VBA.

1 Ответ

0 голосов
/ 04 октября 2019

Существует два драйвера ODBC: один (устарел) от Microsoft, а другой от Oracle. Строки подключения немного отличаются.

«Драйверы Oracle ODBC для Instant Client» включают в себя Instant Client, поэтому нет необходимости устанавливать его отдельно. Вы рискуете получить несоответствия и испортить каталоги.

...