我在Visual Studio 2013中开发一个连接到Oracle数据库的应用程序。我必须使用"非托管驱动程序"。当我尝试在数据集中创建新连接时,当我选择"托管驱动程序"一切正常:找到了tnsnames.ora。但是当我选择"非托管驱动程序"一切都失败了,它给我发了一条消息,比如"无法找到默认的tnsnames.ora文件"
我已经 - 卸载所有旧的Oracle客户端 - 清除所有环境变量 - 重新安装了Oracle客户端,Visual Studio的ODP工具
似乎没什么用。有任何想法吗 ?
答案 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>
上的这篇文章
答案 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 \”