2017-09-01 91 views
0

我使用的NuGet包Oracle.ManagedDataAccess。当调用OracleConnection.Open();时,我得到标题中指定的错误。我的连接字符串看起来像Data Source=RAEDB;User ID=*****;Password=*****;。在tnsnames.ora此数据源配置一样ORA-12154:TNS:无法解析连接标识符指定

RAEDB = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = OraDB_IHDB)(PORT = 1521)) 
    (LOAD_BALANCE = yes) 
    (CONNECT_DATA =  
     (SERVER = DEDICATED) 
     (SERVICE_NAME = ihdb) 
    ) 
) 

我们不使用sqlnet.ora,所以tnsnames.ora默认情况下使用。

奇怪的是,这只发生在NuGet软件包版本12.2.1100,但不在12.1.24160419。可能是该版本的软件包有问题,或者是我错过了一些配置?

+0

看看这个答案:https://stackoverflow.com/questions/28280883/determining-locatation-of-relevant-tnsnames-ora-file/28283924#28283924显然'tnsnames.ora'文件的搜索模式取决于发布。 –

回答

0

你的tnsnames.ora在哪里存放?据documentation(12C 4版(12.1.0.2.4))的搜索路径是:在tnsnames.ora文件在由TNS_ADMIN在.NET配置文件中指定的位置

  1. 数据源的别名。位置可以由绝对或相对目录路径组成。
  2. tnsnames.ora文件中的数据源别名存在于与.exe相同的目录中。

然而,根据一些测试我ODP.NET ManagedDriver(4.121.2.0)使得它也需要%ORACLE_HOME%\network\adminTNS_ADMIN环境变量考虑在内。像文档这样的锁并不是100%正确的。

注意,不像其他司机ODP.NET ManagedDriver不读取从注册表TNS_ADMIN价值!

+0

我正尝试在'%ORACLE_HOME%\ network \ admin'中使用'tnsnames.ora'。所以你说的是ODP.NET托管驱动程序(4.122.2.0(NuGet Package v12.2.1100))不使用'%ORACLE_HOME%\ network \ admin'中的'tnsnames.ora',但驱动程序( 4.121.2.0(NuGet Package v12.1.24160419))呢? – lenny

+0

我不知道。文档说它不使用'%ORACLE_HOME%\ network \ admin' –

+0

那么它适用于我现在我使用的驱动程序版本4.121.2.0 – lenny

相关问题