Saltar al contenido

¿Por qué Oracle.ManagedDataAccess no funciona cuando Oracle.DataAccess sí lo hace?

Contamos con tu apoyo para compartir nuestros escritos con relación a las ciencias de la computación.

Solución:

El orden de prioridad para resolver nombres TNS en ODP.NET, controlador administrado es este (ver aquí):

  1. alias de fuente de datos en la sección ‘fuentes de datos’ en la sección en el archivo de configuración de .NET.
  2. alias de fuente de datos en el archivo tnsnames.ora en la ubicación especificada por ‘TNS_ADMIN’ en el archivo de configuración de .NET.
  3. alias de fuente de datos en el archivo tnsnames.ora presente en el mismo directorio que el .exe.
  4. alias de fuente de datos en el archivo tnsnames.ora presente en %TNS_ADMIN% (donde %TNS_ADMIN% es una configuración de variable de entorno).
  5. alias de fuente de datos en el archivo tnsnames.ora presente en %ORACLE_HOME%networkadmin (donde %ORACLE_HOME% es una configuración de variable de entorno).

Creo que la razón por la que su muestra funciona con Oracle.DataAccess pero no con Oracle.ManagedDataAccess es que la configuración basada en el registro de Windows no es compatible con este último (consulte la documentación): la instalación de ODP.NET establece un registro ORACLE_HOME key (HLKMSOFTWAREOracleKey_NAMEORACLE_HOME) que solo reconoce la parte no administrada.

Intente agregar la ruta a tnsnames.ora al archivo de configuración:



  
    
      
        
      
    
  

Para evitar todo el lío de Oracle de no saber dónde está buscando TNSNAMES.ORA (tengo la confusión adicional de múltiples versiones de Oracle y 32/64 bits), puede copiar la configuración de su TNSNAMES.ORA existente a su propia configuración archivo y utilícelo para su conexión.
Digamos que está satisfecho con la referencia ‘DSDSDS’ en TNSNAMES.ORA que se asigna a algo como:

DSDSDS=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=DSDSDSHost)(Port=4521)))(CONNECT_DATA=(SERVICE_NAME=DSDSDSService)))

Puede tomar el texto después del primer ‘=’ y usarlo donde sea que esté usando ‘DSDSDS’ y no necesitará encontrar TNSNAMES.ORA para saber cómo conectarse.
Ahora tu conexión string se vería así:

string connectionString = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=DSDSDSHost)(Port=4521)))(CONNECT_DATA=(SERVICE_NAME=DSDSDSService)));User Id=UNUNUN;Password=PWPWPW;";

Sección de Reseñas y Valoraciones

Acuérdate de que te brindamos la opción de agregar una reseña si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *