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

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

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

Спасибо и привет,

ошибка


person user3849479    schedule 25.07.2017    source источник
comment
Я получаю ту же ошибку. Проблема, похоже, в том, что: поставщик данных не имеет реализации IVsDataConnectionSupport. Что бы это ни значило   -  person Marco    schedule 10.11.2017


Ответы (2)


ОБНОВЛЕНИЕ 22 ноября 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>

Я надеюсь, что это служит чему-то. Ваше здоровье!

person user12418292    schedule 22.11.2019
comment
Это верное решение! Спасибо! - person batressc; 27.11.2019
comment
мои установки даже не помещали это ни в 2017, ни в 2019. копия + вставка сверху помогли! Спасибо! - person m1m1k; 09.01.2020

Это поздно, но ... проблема в моем случае заключалась в том, что 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\сеть\админ\". Здесь вы должны быть администратором, иначе копирование не удастся.

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

person Evan    schedule 19.07.2018
comment
У меня была проблема, описанная в исходном сообщении, но для Visual Studio 2017. Было обновление до VS2017, и после установки обновления мое соединение ODP.NET не работало. После удаления инструментов ODP.NET с помощью установщика Visual Studio, а затем переустановки инструментов ODP.NET проблема исчезла. - person PoorInRichfield; 03.10.2018