Неуправляемый драйвер Visual Studio ODP - не удалось найти файл tnsnames.ora по умолчанию (12c)

Я разрабатываю приложение в Visual Studio 2013, которое подключается к базе данных Oracle. Я должен использовать «Неуправляемый драйвер». Когда я пытаюсь создать новое соединение в наборе данных, когда я выбираю «Управляемый драйвер», все работает нормально: найден tnsnames.ora. Но когда я выбираю «Неуправляемый драйвер», все не работает, он отправляет мне сообщение вроде «Не удалось найти файл tnsnames.ora по умолчанию».

Я уже - удалил все старые клиенты Oracle - очистил все переменные среды - переустановил клиент Oracle, инструменты ODP для Visual Studio

Кажется, ничего не работает. Любые идеи ?

введите описание изображения здесь


person tapatio    schedule 24.03.2015    source источник
comment
Как выглядит ваша переменная окружения ORA_HOME?   -  person jessehouwing    schedule 24.03.2015
comment
Странно, я проверил, и у меня нет переменной окружения ORA_HOME   -  person tapatio    schedule 24.03.2015
comment
Вы пробовали установить один?   -  person jessehouwing    schedule 24.03.2015
comment
Не требуется (и, возможно, вредно для Windows устанавливать Ora_Home.   -  person Christian Shay    schedule 26.03.2015
comment
Привет, тапатио, извиняюсь за то, что поднял эту тему. Вы нашли какое-нибудь решение? Я застрял с той же проблемой. Tnsmanes.ora загружен для управляемого драйвера.   -  person ivorykoder    schedule 09.06.2016
comment
Привет, к сожалению, нет, не нашел. Я уже пробовал предложения, упомянутые здесь другими товарищами, но никто не работал.   -  person tapatio    schedule 09.06.2016


Ответы (7)


вам следует перейти в папку, содержащую файл machine.config. этот файл находится в %windir%\Microsoft.NET\Framework64\[version]\config\machine.config

убедитесь, что у вас есть следующее значение.

<oracle.manageddataaccess.client>
    <version number="4.121.2.0">
      <settings>
        <setting name="TNS_ADMIN"value="E:\app\client\USERWINDOW\product\12.1.0\client_1\network\admin" />
      </settings>
    </version>
</oracle.manageddataaccess.client>

Также обратитесь к этому сообщению на странице Где находится Machine.Config?

person Angel Olguin    schedule 05.02.2016

Вы можете проигнорировать это сообщение и просто использовать EZ Connect для подключения (указав хост, порт, имя_службы).

Или вы можете найти действующий TNSNAMES.ORA с вашими псевдонимами и скопировать его в: [ORACLE_HOME_WHERE_ODT_IS_INSTALLED] \ NETWORK \ ADMIN

Поскольку управляемый драйвер может найти TNSNAMES.ORA, это означает, что TNS_ADMIN установлен в machine.config. Когда вы подключаетесь с использованием управляемого провайдера, диалоговое окно подключения покажет вам, где находится TNSNAMES.ORA, и вы можете скопировать его.

person Christian Shay    schedule 26.03.2015
comment
Мне пришлось использовать EZ Connect, как вы сказали, поскольку я не мог решить проблему. У меня был коллега, который для него отлично работал, но мы не можем понять, почему. - person tapatio; 07.04.2015
comment
Я также обнаружил, что это так, что этот параметр, к сожалению, был проигнорирован, вероятно, потому что другой конфиг переопределил его. - person Ben O; 06.08.2019

Файл tnsnames.ora должен находиться в (каталог установки) \ network \ admin. Это то, что может предоставить ваша dba.

В переменной среды ORACLE_HOME больше нет необходимости, поскольку эта информация теперь находится в реестре в HKLM \ Software \ Oracle.

Однако, если у вас установлено несколько поставщиков Oracle, неплохо использовать переменную среды TNS_ADMIN, чтобы указать все экземпляры в централизованную папку, в которой находится общий tnsnames.ora.

person b_levitt    schedule 26.03.2015
comment
Фактически, у меня уже есть tnsnames в указанном вами каталоге, но он все равно не работает. - person tapatio; 07.04.2015

Убедитесь, что в machine.config присутствуют следующие записи, чтобы правильно указывать на tnsnames.ora по умолчанию. В моем случае запись для неуправляемого клиента отсутствовала, и после добавления ее вручную в machine.config она работала правильно.

machine.config: ..

    <oracle.manageddataaccess.client>
      <version number="4.121.2.0">
       <settings>
        <setting name="TNS_ADMIN" 
        value="C:\app\client\username\product\12.1.0\client_1\network\admin" 
        />
       </settings>
      </version>
    </oracle.manageddataaccess.client>
    <oracle.unmanageddataaccess.client>
     <version number="4.121.2.0">
      <settings>
      <setting name="TNS_ADMIN" 
       value="C:\app\client\username\product\12.1.0\client_1\network\admin" 
      />
      </settings>
     </version>
    </oracle.unmanageddataaccess.client>

..

person Shakil    schedule 05.04.2017

Мое решение было: перейти в папку "...\product\12.2.0\client_1\odt\vs2017" и вручную установить vs2017.exe, а после того, как он появился в Visual Studio 2017.

person Dénes Riedly    schedule 05.01.2018

Сегодня я столкнулся с той же проблемой. Пробовал описанные выше шаги, но не помогло.

Впоследствии я выяснил, что на моем компьютере также был установлен ODAC, и Visual Studio попыталась использовать dll из клиента ODAC.

После удаления все заработало как шарм.

person Fabo137    schedule 02.07.2018

Вы можете попробовать создать системную переменную (запустите Sysdm.cpl): имя TNS_ADMIN и значение, например. "c: \ app \ client \ Burn \ product \ 12.2.0 \ client_1 \ network \ admin \"

person Griefel    schedule 17.11.2019