"Тестовое соединение успешно", но "в ODP.NET, управляемом драйвере произошла непредвиденная ошибка"

Я хочу подключить Oracle из Visual Studio 2015 Enterprise Update 3. После установки ODT Для Visual Studio 2015 добавление нового соединения с поставщиком данных всплывающее окно Oracle Database (ODP.NET Managed Driver) кажется странным, тестовое соединение успешно, даже с пустой строкой соединения - добавлен ss- и при нажатии ОК происходит непредвиденная ошибка.

64-битная машина, удаленный ODAC, отремонтированный Visual Studio 2015 и установленный ODT для версии 2015.

Спасибо и всего наилучшего,

ошибка

1 ответ

ОБНОВЛЕНИЕ 22/11/2019

Привет всем,

После потраченных впустую часов (а, возможно, и лет) попыток решить проблемы Oracle с помощью Visual Studio, я обнаружил, что если у вас установлены VS2017 и VS2019 и переустановлен ODTforVSXXX, в моем случае ODTforVS2017_122011.exe, установщик добавляет все настройки в файл "devenv.exe.config"последней версии Visual Studio, в данном случае VS2019. Чтобы устранить ошибку, необходимо скопировать эти настройки из "devenv.exe.config" (2019) в "devenv.exe.config" (2017).

<dependentAssembly>
    <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral" />
    <codeBase version="4.122.1.0" href="c:\program files (x86)\oracle developer tools for vs2017\odp.net\managed\common\oracle.manageddataaccess.dll" />
</dependentAssembly>
<dependentAssembly>
    <assemblyIdentity name="Oracle.ManagedDataAccess.EntityFramework" publicKeyToken="89b483f429c47342" culture="neutral" />
    <codeBase version="6.122.1.0" href="c:\program files (x86)\oracle developer tools for vs2017\odp.net\managed\common\ef6\oracle.manageddataaccess.entityframework.dll" />
</dependentAssembly>

<system.data>
      <DbProviderFactories>
         <remove invariant="Oracle.ManagedDataAccess.Client" />
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
        <remove invariant="Microsoft.SqlServerCe.Client" />
        <remove invariant="Microsoft.SqlServerCe.Client.3.5" />
        <remove invariant="Microsoft.SqlServerCe.Client.4.0" />
        <add name="Microsoft SQL Server Compact 4.0 Client Data Provider" invariant="Microsoft.SqlServerCe.Client.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact 4.0 Client" type="Microsoft.SqlServerCe.Client.SqlCeClientFactory, Microsoft.SqlServerCe.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
      </DbProviderFactories>
    </system.data>

Надеюсь, это что-то послужит. Ура!

Это поздно, но... проблема в моем случае заключалась в том, что ODT как-то потерял связь с файлом TNSNAMES после обновления. Я получал точно такую ​​же ошибку: "В ODP.NET, Управляемый драйвер произошла непредвиденная ошибка", НО, "тестовое соединение" = успех.

То, что я сделал, было удалить ODT для VS и переустановить. Обязательно запустите VS от имени администратора. Затем я получаю другую ошибку при подключении: "xxxxx не найден в доступном списке псевдонимов". Это признак того, что TNSNAMES.ora ошибочен или не найден.

В Visual Studio, проходя через Server Explorer -> Modify Connection, теперь снова открывается более расширенное диалоговое окно.

Я нажал кнопку "Поиск..." (в мастере), чтобы найти правильный файл Tnsnames.ora, а затем выбрал параметр "Копировать", чтобы скопировать TNSNAMES.ora в папку, которая требуется ODT: "c:\program files (x86) Инструменты разработчика oracle для vs2017\network\admin\". Здесь вы должны быть администратором, иначе копирование не удастся.

На этом этапе вы можете выбрать имя источника данных, и оно должно работать. Надеюсь, это поможет, это определенно решило проблему для меня. Ваши действия могут отличаться, но проблема заключалась в том, что ODT потерял свою копию TNSNAMES после обновления.

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