Вопрос

Мы используем System.Data.OracleClient и абстрактные базовые классы DbConnection, DbCommand (etc) для подключения к 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;

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

Корпорация Майкрософт устарела от System.Data.OracleClient Смотрите эту статью : http://blogs.oracle.com/databaseinsider/2009/07/microsoft_deprecates_systemdataoracleclient_net_developers_for_oracle_should_migrate_to_oracle_data_provider_for_net.html

Если ваш клиент Oracle находится в версии 10 +, вы также можете использовать EZCONNECT ( ПОДКЛЮЧЕНИЕ ) (что означает Простой метод именования Connect).Тогда ваша строка подключения будет выглядеть следующим образом :

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

В сочетании с Мгновенный клиент Oracle, это делает использование Oracle почти профессиональным !...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top