Я могу успешно подключиться к Oracle через собственные драйверы, но не могу заставить работать соединение ODBC.Клиентское программное обеспечение Oracle 11g установлено на моем 64-разрядном компьютере с Windows 7, а также 32-разрядные драйверы ODBC, загруженные из Мгновенные клиентские загрузки для Microsoft Windows 32-разрядные .
Позвольте мнесначала опишите успешные соединения:
TNSNames.ORA
содержит данные для установки Oracle 10:
# TNSNAMES.ORA Network Configuration File: C:\oracle\ora92\network\admin\tnsnames.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-разрядных драйвера Oracle ODBC:
- Microsoft ODBC для Oracle версии 6.01.7601.19135 - я думаю, что это пришло с ОС Win7
- Oracle в instantclient_11_2 версии 11.02.00.04 - я установил это вручную из источника, упомянутого вверху (работает как администратор, как указано в Примечания к выпуску Oracle Instant Client ODBC ).
Я настроил тwo Системные уведомления о доставке через эти драйверы, но ни один из них не работает.
Драйвер 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:\app\jan\product\11.2.0\client_1\SQORA32.dll)
Эта папка, в которой установлено мое клиентское программное обеспечение Oracle, содержит SQORA32.DLL
(и другие) инаходится в моем системном пути.
Я пробовал все виды изменений, включая / исключая доменное имя, имя базы данных и т. д., без успеха.
Как правильно настроить ODBCподключение для подключения к Oracle, которое будет использоваться в 32-разрядном приложении Delphi-Tokyo через FireDAC?
Что такжеot help:
- Переустановка 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 года