C# ORA-12154——在SQL PLUS中工作,而不是在C中工作#
我的电脑上运行着一个正常工作的C#应用程序。我把它给了一位同事,他得到了可怕的ORA-12154错误。经过多次搜索和尝试,我们不知下一步该做什么 设置: C#建立了一个类似于C# ORA-12154——在SQL PLUS中工作,而不是在C中工作#,c#,oracle,C#,Oracle,我的电脑上运行着一个正常工作的C#应用程序。我把它给了一位同事,他得到了可怕的ORA-12154错误。经过多次搜索和尝试,我们不知下一步该做什么 设置: C#建立了一个类似于 using (var connection = new OracleConnection(ConnectionString)) ConnectionString的值为“数据源=MY\u TNS\u条目;用户ID=usernm;密码=passwd” 该应用程序包括Oracle.ManagedDataAccess.dll文件
using (var connection = new OracleConnection(ConnectionString))
ConnectionString的值为“数据源=MY\u TNS\u条目;用户ID=usernm;密码=passwd”
该应用程序包括Oracle.ManagedDataAccess.dll文件
这两台机器都安装了Oracle 64位客户端(11g 11.2.0)。两个TNSNAMES文件是相同的
在我同事的电脑上,他可以运行sqlplus usernm/passwd@MY_TNS_ENTRY
,然后连接到数据库。当C#应用程序运行时,会抛出ORA-12154错误
我们还应该检查什么来查找此错误的原因?我假设它使用了不同的TNS名称文件,并且在该文件中不存在
MY\u TNS\u条目。查看问题以查看如何检查它正在使用的文件。ODP.NET托管驱动程序对tnsnames.ora
(和sqlnet.ora
,等等)使用的搜索路径与SQL*Plus不同。几乎每个驱动程序/应用程序在查找这些文件时的行为都不同
ODP.NET托管驱动程序使用以下路径:
.NET配置文件中
部分下数据源部分中的数据源别名
tnsnames.ora
文件中的数据源别名,位于.NET配置文件中的TNS_ADMIN
指定的位置。位置可以由绝对或相对目录路径组成
tnsnames.ora
文件中的数据源别名与.exe
位于同一目录中
看
与其他应用程序的主要区别在于ODP.NET托管驱动程序不读取注册表设置或环境变量来确定TNS\u ADMIN
的值