ODAC & C # - TNS: Conecte el tiempo de espera ocurrido: conectando solo a través del depurador VS2005
-
18-09-2020 - |
Pregunta
Soy nuevo en Oracle, y hay un problema que estoy enfrentando. Cuando ejecuto la aplicación de IDE - Visual Studio 2005, la conexión de la base de datos se establece sin problemas, pero cuando ejecuto una versión instalada de la aplicación, la conexión DB falla y obtengo un TNS: Conectar el tiempo de espera ocurrido.
Lo intenté con SQLNET.ORA y soluciones similares que se encuentran en línea, pero no pude resolver el problema. Me pregunto por qué sucede esto, ya que la aplicación que se ejecuta a través del IDE y a través de una instalación está en la misma PC. Me aseguré de que el archivo TNSNames.ora se editará correctamente, y puedo conectarme a través de una instancia de la aplicación que se ejecuta directamente en Visual Studio.
public bool connectToDatabase(string dbConnStr)
{
try
{
databaseConnection = dbConnStr;
OracleConnection dbConn = new OracleConnection(databaseConnection);
if (dbConn == null)
{
CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "Connection object is null");
return false;
}
if (dbConn.State.ToString().Equals("Closed", StringComparison.OrdinalIgnoreCase))
{
CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "DB connection - " + dbConn.ConnectionString);
dbConn.Open();
return true;
}
}
catch (Exception ex)
{
CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, ex.Message + "\n" + ex.StackTrace);
CreateDLLLogFiles.ErrorLog(CreateDLLLogFiles.FileName, "DB String - " + databaseConnection);
return false;
}
return false;
}
La traza de pila lee así:
7/22/2010 6:38:51 PM ORA-12170: TNS:Connect timeout occurred
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src)
at Oracle.DataAccess.Client.OracleConnection.Open()
at SQL.connectToDatabase(String dbConnStr)
El tnsnames.ora es algo así:
MySource =
(DESCRIPTION =
(CONNECT_TIMEOUT=180)(RETRY_COUNT=2)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 125.63.77.232)(PORT = 1521)))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MySource )
)
)
Mientras tanto, me estaba publicando un error de contextualización con el depurador, así que seguí las instrucciones y cambié el atributo de Stathread a MtathRead en Main (). No más contextswitchdeadlock - y aún así, el problema de la conexión persiste.
Esperaba que pudieras arrojar algo de luz sobre el tema, estoy cerca de sacar mi cabello. Cualquier idea sería apreciada.
Solución
Se resolvió el problema.¡Muchas gracias por su ayuda, todos!:) Resultó ser una combinación de DLL de ODAC corruptos y luego algunos.