Visual Studio ODP非托管驱动程序 - 无法找到默认的tnsnames.ora文件(12c)

时间:2015-03-24 13:07:08

标签: visual-studio-2012 odp.net oracle12c

我在Visual Studio 2013中开发一个连接到Oracle数据库的应用程序。我必须使用"非托管驱动程序"。当我尝试在数据集中创建新连接时,当我选择"托管驱动程序"一切正常:找到了tnsnames.ora。但是当我选择"非托管驱动程序"一切都失败了,它给我发了一条消息,比如"无法找到默认的tnsnames.ora文件"

我已经 - 卸载所有旧的Oracle客户端 - 清除所有环境变量 - 重新安装了Oracle客户端,Visual Studio的ODP工具

似乎没什么用。有任何想法吗 ?

enter image description here

7 个答案:

答案 0 :(得分:4)

您应该转到包含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>

另请参阅Where Is Machine.Config?

上的这篇文章

答案 1 :(得分:1)

您可以忽略该消息,只需使用EZ Connect进行连接(提供主机,端口,service_name)。

或者您可以在其中找到包含别名的有效TNSNAMES.ORA,并将其复制到: [ORACLE_HOME_WHERE_ODT_IS_INSTALLED] \ NETWORK \ ADMIN

由于托管驱动程序可以找到TNSNAMES.ORA,这意味着在machine.config中设置了TNS_ADMIN。当您使用托管提供商进行连接时,连接对话框将显示它在哪里找到TNSNAMES.ORA,您可以将其复制过来。

答案 2 :(得分:0)

tnsnames.ora文件应该在(安装目录)\ network \ admin中。这是你的dba所能提供的。

不再需要ORACLE_HOME环境变量,因为现在可以在HKLM \ Software \ Oracle的注册表中找到该信息。

但是,如果您有多个oracle提供程序安装,最好使用TNS_ADMIN环境变量将所有实例指向共享tnsnames.ora所在的集中文件夹。

答案 3 :(得分:0)

请确保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>

...

答案 4 :(得分:0)

我的解决方案是:转到config.UseServiceBus()文件夹 并手动安装 "...\product\12.2.0\client_1\odt\vs2017",并在2017年的视觉工作室中出现。

答案 5 :(得分:0)

我今天遇到了完全相同的问题。 尝试了上述步骤,但没有帮助。

之后,我发现在我的计算机上也安装了ODAC,Visual Studio尝试使用ODAC客户端中的dll。

移除后,一切都像灵符一样。

答案 6 :(得分:0)

您可以尝试创建系统变量(运行Sysdm.cpl):名称TNS_ADMIN和值,例如“ c:\ app \ client \ Burn \ product \ 12.2.0 \ client_1 \ network \ admin \”