C# ORA-12154——在SQL PLUS中工作,而不是在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文件

我的电脑上运行着一个正常工作的C#应用程序。我把它给了一位同事,他得到了可怕的ORA-12154错误。经过多次搜索和尝试,我们不知下一步该做什么

设置: C#建立了一个类似于

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
    的值