"测试连接成功"但是" ODP.NET,托管驱动程序"出现了意外错误。

时间:2017-07-25 17:58:28

标签: oracle visual-studio visual-studio-2015 odp.net odp.net-managed

我想从Visual Studio 2015 Enterprise Update 3连接Oracle。 安装ODT For Visual Studio 2015后,要添加与数据提供者的新连接Oracle数据库(ODP.NET托管驱动程序)弹出窗口似乎很奇怪,即使使用空连接字符串-added ss-,测试连接也会成功,按下确定时会发生意外错误。< / p>

64位机器,卸载了ODAC,修复了Visual Studio 2015并安装了ODT for vs 2015.

谢谢和问候,

error

2 个答案:

答案 0 :(得分:3)

更新22/11/2019

大家好,

在花费数小时(甚至可能数年)尝试解决Visual Studio的Oracle问题之后,我发现如果已安装VS2017和VS2019并重新安装了ODTforVSXXX(在我的情况下为ODTforVS2017_122011.exe),安装程序将在其中添加所有设置最新的Visual Studio(在本例中为VS2019)的文件“ devenv.exe.config”。要解决该错误,必须将这些设置从“ 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>

我希望它能有所作为。 干杯!

答案 1 :(得分:2)

这太晚了,但是...在我的情况下,问题是,ODT在更新后以某种方式失去了与TNSNAMES文件的连接。我遇到了完全相同的错误:“ ODP.NET,托管驱动程序中发生意外错误”,但“测试连接” =成功。

我所做的是卸载VS的ODT并重新安装。确保现在以管理员身份运行VS。接下来,我在连接时遇到另一个错误:“在可用的别名列表中找不到xxxxx”。这是TNSNAMES.ora错误或找不到的线索。

在Visual Studio中,依次浏览“服务器资源管理器”->“修改连接”,然后又返回了更扩展的对话框。

我单击了“搜索...”按钮(在向导中)以找到正确的Tnsnames.ora,然后选择“复制”选项以将TNSNAMES.ora复制到ODT所需的位置:“ c:\ program files (x86)\ vs2017 \ network \ admin \的Oracle开发人员工具”。这是您必须是Admin的地方,否则复制将失败。

此时,您可以选择数据源名称,它应该可以使用。希望这会有所帮助,它一定可以解决我的问题。您的步骤可能会有所不同,但是问题在于ODT在更新后丢失了TNSNAMES副本。