Я хочу подключиться к Oracle ( 11g) с использованием unixODBC
. Я хочу, чтобы строка подключения ТОЛЬКО указывала всю информацию о базе данных/источнике данных, а INI-файлы ODBC (/etc/odbc.ini
и /etc/odbcinst.ini
) содержат только общую информацию о драйвере, например, где найти «.so» и т. д., т.е. я хочу, чтобы они были статическими.Я хочу сделать это, чтобы я мог получить строку подключения от пользователя извне и подключиться к источнику данных без необходимости изменять какие-либо INI-файлы или любую другую конфигурацию на диске.
Все примеры, которые я видел, заставляют меня определять информацию о сервере в /etc/odbc.ini
следующим образом:
[myDSNname]
Driver = OracleODBC-11g
DSN = OracleODBC-11g
ServerName = //xxx.xxx.xxx.xxx:1521/SID_NAME
UserID = my_user
Password = my_pass
Теперь я выяснил, как получить идентификатор пользователя и пароль в строке подключения. добавив "UID=my_user;PWD=my_pass"
в строку подключения и удалив их из odbc.ini
. Моя радость быстро прошла, когда я не смог найти способ получить ServerName
из odbc.ini
, а также в строку подключения. Итак, как мне это сделать? И есть ли способ вообще избавиться от DSN в odbc.ini
и иметь только Driver
из odbcinst.ini
в строке подключения, например мы делаем для MySQL?
Редактировать:
Попытка использовать любую из строк подключения с www.connectionstrings.com, которые не требуют TNS или DSN, включая варианты EZCONNECT
, дает мне:
[HY000] [unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified
(12162) (SQLDriverConnectW)