我的计算机上运行了一个正在运行的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。
我们还应该检查以查找此错误的原因?
答案 0 :(得分:2)
我假设它正在使用不同的TNS名称文件,并且在那个文件中MY_TNS_ENTRY
不存在。查看this问题,了解如何查看正在使用的文件。
答案 1 :(得分:1)
ODP.NET托管驱动程序使用tnsnames.ora
(和sqlnet.ora
等等)的不同搜索路径,而不是SQL * Plus。几乎每个驱动程序/应用程序在查找这些文件时的行为都不同。
ODP.NET托管驱动程序使用此路径:
dataSources
部分下的<oracle.manageddataaccess.client>
部分中的数据源别名。tnsnames.ora
指定位置的TNS_ADMIN
文件中的数据源别名。位置可以包含绝对或相对目录路径。tnsnames.ora
位于同一目录中的.exe
文件中的数据源别名。请参阅Data Provider for .NET Developer's Guide
与其他应用程序的市长差异是ODP.NET托管驱动程序不读取注册表设置或环境变量来确定TNS_ADMIN
的值。