2012-09-24 16 views
8

Así que me estoy conectando a un servidor externo a través de C#. Acabo de instalar Oracle 11g cliente en mi máquina desde aquí: http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html (255MB uno).OracleConnection.Open está lanzando ORA-12541 TNS sin escucha

Después de leer muchos blogs/preguntas me encontré con este artículo para ser útil:

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

Así es esto correcto? No puedo hacer nada. El DBA tiene que editar el archivo LISTENER.ORA?

Mis tnsnames.ora se ve así:

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

Me está tirando del err en:

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!!! 

¿Qué debo hacer? Agradezco cualquier comentario ¡Gracias!

+0

¿Está seguro de que su nombre de host "TestHostName.us.local" es correcto? ¿Comprobó con "tnsping TestingConnect" desde la línea de comandos si la base de datos es accesible? –

+3

Hay muchas razones para este error. Si desea eliminar tener que tener una entrada TNSNames.ora, puede intentar usar la cadena de conexión TNS-less. mira ... http://www.connectionstrings.com/oracle solo para ver si esto funciona. Esto puede no solucionar el problema, pero eliminaría el TNSNames.ora como el problema. –

Respuesta

5

Gracias por todas sus aportaciones. Cambié mi cadena de conexión y funcionó. Aquí es lo que parece:

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

Usted puede hacer esto un par de maneras: Usando sus TNSNAMES archivo de la fuente de datos debe especificar el nombre de la entrada TNSHosts (el bit antes de la primera "=" de la tnsnames.ora), no el nombre de host:

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

O usted puede poner toda la entrada de TNS en la cadena de conexión, así:

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"; 
Cuestiones relacionadas