Мое приложение получает эту странную ошибку с TNS, но - PullRequest
0 голосов
/ 04 февраля 2020

VB. Net приложение получает эту ошибку. Однако, когда я открываю SQL Plus из командной строки, я могу без проблем подключиться

ORA-12154: TNS:could not resolve the connect identifier specified

Я не уверен, что здесь делать.

Я также могу соединиться с SQL Обозреватель серверов Visual Studio также может просматривать базу данных.

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Если вы используете клиент Oracle.ManagedDataAccess, вы можете указать путь к файлу TNSnames в файле application.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <oracle.manageddataaccess.client>
    <version number="*">
      <settings>
        <setting name="TNS_ADMIN" value="C:\OracleTNS" />
      </settings>
    </version>
  </oracle.manageddataaccess.client>
</configuration>
1 голос
/ 04 февраля 2020

Я обнаружил, что вместо указания короткого имени для источника данных, где бы ни находилась строка подключения, простое описание всего подключения может решить подобные проблемы. Если вы не хотите отыскивать указанную проблему конфигурации c на машине, вы можете обойти ее, но у меня ее еще не было.

Так что, если ваш файл TNSNames имеет:

MYSID=

  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = mydnshostname)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = MYSID)
    )
  )

и ваша строка подключения в web.config выглядит примерно так:

<connectionStrings>
    <add name="MyConnection" connectionString="Data Source=MYSID;User ID=myUser;Password=myPassword;providerName="Oracle.DataAccess.Client" />
  </connectionStrings>

вы можете сделать это вместо этого в файле конфигурации:

<connectionStrings>
        <add name="MyConnection" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST = mydnshostname)(PORT = 1521)))(CONNECT_DATA=(SERVICE_NAME = MYSID)));User ID=myUser;Password=myPassword;providerName="Oracle.DataAccess.Client" />
      </connectionStrings>
...