2012-09-24 18 views
8

Così mi collego a un server esterno tramite C#. Ho appena installato il client Oracle 11g sul mio computer da qui: http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html (255 MB uno).OracleConnection.Open sta lanciando ORA-12541 TNS senza ascoltatore

Dopo aver letto molti blog/domande ho trovato questo articolo per essere utile:

http://dbaspot.com/oracle-faq/444787-ora-12541-tns-no-listener.html

Quindi è corretto? Non posso fare nulla. Il DBA deve modificare il file LISTENER.ORA?

miei tnsnames.ora aspetto:

TestingConnect= 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = TEST) 
    ) 
) 

Mi sta gettando l'err a:

Oracle.DataAccess.Client.OracleConnection connection = new Oracle.DataAccess.Client.OracleConnection(); 

connection.ConnectionString = "Data Source=TestHostName.us.local;Persist Security Info=True;" + "User ID=tesName;Password=test"; 

connection.Open() //Throwing ERR!!! 

Cosa devo fare? Apprezzo qualsiasi commento. Grazie!

+0

Sei sicuro che il tuo nome host "TestHostName.us.local" è corretto? Hai controllato con "tnsping TestingConnect" dalla riga di comando se il database è raggiungibile? –

+3

Ci sono molti motivi per questo errore. Se si desidera eliminare la presenza di una voce TNSNames.ora, è possibile provare a utilizzare la stringa di connessione TNS-less. vedere ... http://www.connectionstrings.com/oracle solo per vedere se funziona. Questo potrebbe non risolvere il problema ma eliminerebbe TNSNames.ora come problema. –

risposta

5

Grazie per il vostro input. Ho cambiato la mia stringa di connessione e ha funzionato. Ecco il suo aspetto:

private static string GetConnectionString() 
    { 
     return "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=TestHostName.us.local)(PORT=1523)))" + 
       "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=CCDB)));User id=UserName; Password=Password; enlist=false; pooling=false;"; 
    } 
9

Si può fare questo un paio di modi: Usando le tnsnames File l'origine dei dati deve specificare il nome della voce TNSHosts (il bit prima del primo "=" dal tnsnames.ora), non il nome host:

connection.ConnectionString = "Data Source=TestingConnect;Persist Security Info=True;" + "User ID=tesName;Password=test"; 

Oppure si può mettere l'intera voce TNS nella stringa di connessione in questo modo:

connection.ConnectionString = "Data Source=(DESCRIPTION = " + 
    "(ADDRESS = (PROTOCOL = TCP)(HOST = TestHostName.us.local)(PORT = 1523))" + 
    "(CONNECT_DATA =" + 
    "(SERVER = DEDICATED)" + 
    "(SERVICE_NAME = TEST))" + 
    ");Persist Security Info=True;User ID=tesName;Password=test"; 
Problemi correlati