ORA-12154 - 在SQL PLUS中工作而不是在C#中工作

时间:2016-10-03 21:04:53

标签: c# oracle

我的计算机上运行了一个正在运行的C#应用​​程序。我把它交给了一位同事,他得到了可怕的ORA-12154错误。经过大量的搜索和尝试,我们不知道接下来要尝试什么。

设定: C#建立了类似

的连接
using (var connection = new OracleConnection(ConnectionString))

ConnectionString的值为"Data Source=MY_TNS_ENTRY;USER ID=usernm;Password=passwd"

该应用程序包含Oracle.ManagedDataAccess.dll文件。

两台机器都安装了Oracle 64Bit客户端(11g 11.2.0)。两个TNSNAMES文件都是相同的。

在我的同事的计算机上,他可以在命令行运行sqlplus usernm/passwd@MY_TNS_ENTRY并连接到数据库。当C#app运行时,它会抛出ORA-12154 ERROR。

我们还应该检查以查找此错误的原因?

2 个答案:

答案 0 :(得分:2)

我假设它正在使用不同的TNS名称文件,并且在那个文件中MY_TNS_ENTRY不存在。查看this问题,了解如何查看正在使用的文件。

答案 1 :(得分:1)

ODP.NET托管驱动程序使用tnsnames.ora(和sqlnet.ora等等)的不同搜索路径,而不是SQL * Plus。几乎每个驱动程序/应用程序在查找这些文件时的行为都不同。

ODP.NET托管驱动程序使用此路径:

  1. .NET配置文件中dataSources部分下的<oracle.manageddataaccess.client>部分中的数据源别名。
  2. .NET配置文件中tnsnames.ora指定位置的TNS_ADMIN文件中的数据源别名。位置可以包含绝对或相对目录路径。
  3. tnsnames.ora位于同一目录中的.exe文件中的数据源别名。
  4. 请参阅Data Provider for .NET Developer's Guide

    与其他应用程序的市长差异是ODP.NET托管驱动程序不读取注册表设置或环境变量来确定TNS_ADMIN的值。