2017-09-01 77 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

相關問題