Похоже, вы пропустили некоторые основы, давайте объясним. Если вы хотите подключиться к базе данных Oracle, независимо от того, sqlplus или VBA или что-то еще, на самом деле вам придется сделать это следующим образом:
sqlplus MyUserName@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.0)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORA12)))
Однако никто не хочет или не может вспомнить такое длинное и сложное имя базы данных.
Таким образом, вы бы предпочли использовать псевдоним, то есть ярлык для (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.0)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORA12)))
Существуют различные способы определения и разрешения таких псевдонимов (см. Управление информацией о сетевом адресе ), наиболее распространенным и простым способом является использование локального tnsnames.ora
файла.
В вашем файле tnsnames.ora
вы можете добавить строку вроде этой:
MY_DB=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.0)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORA12)))
Затем вы можете подключиться к вашей базе данных просто с помощью
sqlplus MyUserName@MY_DB
Теперь следующий вопрос: как мое приложение находит файл tnsnames.ora
в моей системе? Ответ не так тривиален, как вы могли бы предположить, см. Определение местоположения соответствующего файла tnsnames.ora
Наиболее безопасное решение: определите переменную среды TNS_ADMIN
и укажите в качестве значения имя каталога, в котором находится файл tnsnames.ora
.
Поставщик "msdaora" использует другой шаблон для поиска файла tnsnames.ora
, чем поставщик "Oracle OLE DB". msdaora находит ваш файл, Oracle OLE DB - нет. Настройка переменных среды TNS_ADMIN
позволяет работать обоим.