2016-11-21 48 views
1

我想從C#連接到Oracle數據庫,但我不能 因爲這個錯誤表明ORA-12545:連接失敗,因爲目標主機或對象不存在 那我該怎麼辦?C#連接到Oracle數據庫錯誤ORA-12545:連接失敗,因爲目標主機或對象不存在

C#代碼

string strConn = "Data Source =(DESCRIPTION =" + 
           "(ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521))" + 
           "(CONNECT_DATA =" + 
           " (SERVER = DEDICATED)" + 
           "(SERVICE_NAME = XE)" + 
           ")" + 
           ");User Id =system;password=bluesky;"; 
       OracleConnection conn = new OracleConnection(strConn); 

       conn.Open(); 
       conn.Close(); 

的listener.ora

SID_LIST_LISTENER =(SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:\ oraclexe \ (\ program \ extproc) ) (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = C:\ oraclexe \應用\ ORACLE \產品\ 11.2.0 \服務器) (PROGRAM = EXTPROC) ))

LISTENER =(DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)) (ADDRESS =(PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521)) ))

DEFAULT_SERVICE_LISTENER =( XE)

tnsnames.ora

XE =(DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST = DESKTOP-EIQ5MRF)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE) ))

EXTPROC_CONNECTION_DATA =(DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRE​​SENTATION = RO) ))

ORACLR_CONNECTION_DATA =(DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = IPC)(KEY = EXTPROC1)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRE​​SENTATION = RO) ))

+0

檢查您的連接字符串。最可能的原因是你在那裏犯了一個錯誤。 – Takarii

+0

「ORA-12454:連接失敗,因爲目標主機或對象不存在」 - 檢查您的連接字符串 –

+0

只是一個建議,嘗試用機器ip替換DESKTOP-EIQ5MRF。 –

回答

0

錯誤

ORA-12454:連接失敗,因爲目標主機或對象不存在

這意味着你有連接字符串的問題,再次檢查所有的訪問數據,機器名稱,並嘗試使用此連接字符串,你忘了添加「ADDRESS_LIST」,在這裏檢查doc.

使用ODP.NET沒有tnsnames.ora,應該像

var sampleConn= @"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS= (PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))) 
        (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID))); 
        User Id=myUsername;Password=myPassword;" 

所以你的連接字符串應該像

string strCon [email protected]"Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=DESKTOP-EIQ5MRF)(PORT=1521))) 
          (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE))); 
          User Id = system; Password = bluesky; ";