Я могу успешно подключиться к Oracle через собственные драйверы, но не могу подключиться к ODBC-соединению. Клиентское программное обеспечение Oracle 11g установлено на моем 64-разрядном компьютере под управлением Windows 7, а также 32-разрядные драйверы ODBC, загруженные из файлов Instant Client Downloads для Microsoft Windows 32-bit .
Позвольте мне сначала описать успешные связи:
TNSNames.ORA
содержит данные для установки Oracle 10:
# TNSNAMES.ORA Network Configuration File: C:oracleora92
etworkadmin nsnames.ora
# Generated by Oracle configuration tools.
VS2003-2005-10.TimeTellBV.nl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = VS2003-2005-10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = Orclvs10)
)
)
Я настроил мой TFDConnection
с
DriverName := S_FD_OraId;
Params.Database := 'VS2003-2005-10';
В качестве альтернативы, я могу обойти TNSNAMES.ORA
, указав непосредственно:
DriverName := S_FD_OraId;
Params.Database := '(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = VS2012-2012.timetellbv.nl)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl12.timetellbv.nl) ))';
(Как вы можете видеть, это еще один сервер Oracle TNSNAMES.ORA
)
Теперь неудачные попытки через ODBC
Установлены два 32-разрядных драйвера ODBC Oracle:
- Microsoft ODBC для Oracle версии 6.01.7601.19135 - я думаю, что это произошло с ОС Win7
- Oracle в версии instantclient_11_2 11.02.00.04 - я установил это вручную из источника, упомянутого в верхней части (работает как admin, как предложено в примечаниях к выпуску ODBC Oracle Instant Client ODBC ).
Я установил два системных DSN через эти драйверы, но не работает.
Драйвер ODBC версии 6, дающий ему имя записи TSNAMES.ORA для «Server»:
и идентификатор драйвера Oracle версии 11:
Для этого второго я добавил еще одну запись TNSNAMES.ORA
, так как в этом диалоге явно было предложено пройти через этот файл:
VS2012-2012.TimetellBV.nl =
(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = VS2012-2012)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl12.timetellbv.nl)
)
)
Я настроил мой TFDConnection
с
DriverName := S_FD_ODBCId;
Params.Add('DataSource=' + lODBCName); // The ODBC DSN Name
Params.Database := lDataSection.Values[INISTRING_DATABASENAME];
И этот код, и кнопка тестирования в 32-разрядном администраторе ODBC с ошибкой:
Unable to connect
SQLState IM003
The specified driver could not be loaded due to system error 127: cannot find procedure<br />
(Oracle in instantclient_11_2; D:appjanproduct11.2.0client_1SQORA32.dll)
В этой папке установлено мое клиентское программное обеспечение Oracle, оно содержит SQORA32.DLL
(и другие) и находится в моем системном пути.
Я пробовал всевозможные варианты, включая / исключая имя домена, имя базы данных и т. Д., Без успеха.
Как правильно настроить соединение ODBC для подключения к Oracle, которое будет использоваться в 32-битном приложении Delphi-Tokyo через FireDAC?
Что также не помогло:
- Переустановка 32-разрядной распространяемой версии Visual Studio 2013
- Скопируйте файл sqora32.dll в папку Windows SysWOW64.
- Установка переменной окружения ORACLE_HOME в d: app jan product 11.2.0 client_1
- Установка переменной среды TNS_ADMIN в d: app jan product 11.2.0 client_1
- Переименование sqora32.dll на SQORA32.dll
- Заменен c: windows syswow64 mfc42.dll от 11 марта 2011 года с более новой версией из домашней папки Oracle от 27 апреля 2011 г.