Подключиться к БД Oracle из JavaScript

Я использую проприетарный продукт для автоматизированного тестирования, который использует механизм javascript для запуска тестовых сценариев.

Я пытаюсь подключиться к базе данных Oracle на сервере для настройки тестовых данных/среды. В моем коде используется следующая строка подключения:

var dbDriverString = 'Driver={Microsoft ODBC for Oracle};Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1.1.1.1)(PORT=1521))(CONNECT_DATA=(SID=dbname)));Uid=abc;Pwd=abc;';

var connectionString = dbDriverString;

if (Database.DoAttach(connectionString, '') == true)
    Tester.Assert('Connected to database.', true);

Я установил клиент Oracle Database 11g Release 2 (11.2.0.1.0) для клиента Microsoft Windows (x64) на свою виртуальную машину Windows. Я не могу подключиться к базе данных. Я продолжаю получать следующую ошибку:

[Microsoft] [Диспетчер драйверов ODBC] Сбой SQLAllocHandle драйвера на SQL_HANDLE_ENV.

Я правильно настроил все пути. ORACLE_HOME установлен, ORACLE_HOME/bin также установлен как переменная среды. Я также пытался использовать другие драйверы/строки подключения.

Любые предложения будут полезны.


person user3063502    schedule 23.11.2015    source источник
comment
Вы уверены, что ваш SID на самом деле «dbname»?   -  person Drumbeg    schedule 24.11.2015
comment
Я могу подключиться к Oracle с помощью SQL Developer, используя хост-компьютер под управлением Linux с той же информацией. Я также могу пропинговать его через виртуальную машину Windows, где находится приложение для автоматического тестирования. Я очистил детали строки подключения, чтобы не использовать фактические, потому что у них есть имя клиента и т. д.   -  person user3063502    schedule 24.11.2015


Ответы (1)


Основной проблемой было несоответствие между аркой приложений и аркой драйверов. Следующее было сделано на свежей виртуальной машине с нуля:

  1. Архитектура приложения и драйвера должна совпадать, то есть как 32-битная, так и 64-битная.
  2. Панель управления -> Администрирование -> Источники ODBC в Win 7 amd64 покажет доступные 64-битные драйверы.
  3. Чтобы проверить, какая 32-битная версия установлена, запустите -> cmd -> c:\Windows\SysWow64\odbcad32.exe.

Если вы в конечном итоге определите пользовательский/системный DSN для драйвера Oracle_Ora11gHome1 (wtf Oracle), имя службы TNS будет yourip:port/sid

person user3063502    schedule 24.11.2015