OracleClient + TNSless соединение с.NET

Мы используем System.Data.OracleClient и абстрактные базовые классы DbConnection, DbCommand (и т. Д.) Для подключения к Oracle.

Связь прекрасно работает на наших этапах разработки. Во время постановки мы сталкиваемся с ошибкой ORA-12514: TNS: слушатель в настоящее время не знает об услуге, запрошенной в дескрипторе соединения.

Нашей целью было подключение без записи TNS и предоставление всей необходимой информации в строке подключения (www.connectionstrings.com/oracle#19)

Я могу подтвердить, что SQL plus будет подключаться к нужной схеме с промежуточного сервера (слушатель слушает). Запись TNS, подключенная к SQLPlus, соответствует всем учетным данным создаваемой строки запроса.

SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;

Есть ли установка на сервер, который мы пропустили? Что-то, что мы можем настроить?

Любая помощь приветствуется.

4 ответа

Решение

SID не является именем службы. Имя службы - это обычно полное имя базы данных, а SID - короткий идентификатор.

Имя службы может быть dbname.company.com, а ваш SID - dbname. Экземпляр может фактически иметь несколько имен сервисов, связанных с ним, но только один SID.

Измените имя вашего SERVICE_NAME на SID в строке подключения или укажите имя службы для параметра SERVICE_NAME.

Если я правильно помню, у меня была та же проблема, пока я не переключился на использование провайдеров Oracle и OracleDbConnection и OracleDbCommand. Универсальные не всегда определяют правильного поставщика во всех случаях.

Если ваш клиент Oracle версии 10+, вы также можете использовать EZCONNECT (что означает метод именования Easy Connect). Ваша строка подключения будет выглядеть так:

"Data Source=MyHost:MyPort/MyServiceName;User ID=myUserName;Password=myPassword"

В сочетании с Oracle Instant Client это делает использование Oracle почти профессиональным!...

Другие вопросы по тегам