Cómo conectar desde Visual Studio y SSIS con bases de datos Oracle

Conectar flujos de datos de Integration Services con bases de datos Oracle es muy sencillo, siempre que tengas bien configurado el driver de Oracle que te va a permitir esta conexión.

Los drivers que vienen por defecto no suelen funcionar bien para conectar con Oracle, y lo más recomendable es instalar y utilizar los conectores que proporciona Oracle, el famoso cliente de Oracle, tanto para trabajar con SQL Server Integration Services, como para crear aplicaciones directamente con Visual Studio.

Como en la instalación, que aunque es sencilla, hay que tener en cuenta algunas cosas que no son demasiado intuitivas, en este post reproduzco mi experiencia con una instalación para conectar un cliente de SSIS de una máquina de 64 bits con una base de datos Oracle instalada en un servidor remoto también de 64 bits, servidor y BD. Remarco lo de 64 porque es importante.

El conector que he probado con las SQL Server Data Tools de mi SQL Server 2012 es el OLEDB. En este caso utilizo OLEDB porque me va bien para poder utilizar parámetros en las consultas de SSIS a Oracle, pero lo mismo debería servir para ADO.NET, por ejemplo. Igualmente, en este aspecto hablar de SSIS / SQL Server Data Tools es también hablar de Visual Studio.

 

Instalación de conectores de Oracle para utilizarlos desde Visual Studio

Lo más importante es elegir bien el instalador que se va a utilizar, y lo que comentaba que es poco intuitivo y te puede hacer perder mucho tiempo es que aunque tu sistema, tu base de datos SQL Server y el servidor y base de datos Oracle sean todos de 64 bits, los drivers que has has de utilizar para desarrollar con Visual Studio, y con SSDT son los de 32 bits, al menos a día de hoy.

Este pantallazo las aplicaciones que se ejecutan en mi ordenador con Windows 10 de 64 bits y SQL Server 2012 también de 64 bits va bien para hacerse a una idea de 'por donde van los tiros':

Visual Studio de 32 bits

Apps de 32 bits en Ordenador con Windows 10 de 64bits y SQL Server de 64bits

Opciones para descargar e instalar paquetes de conectores de Oracle

  • Yo he utilizado OLEDB, pero si vas a utilizar ODBC, tienes la opción de descargar el clásico cliente de Oracle, el Instant Client Basic de 32 bits, y después descargar también el paquete 'Instant Client Package - ODBC' y descomprimirlo en la misma carpeta que el cliente. Si no está, recuerda añadir esta carpeta al path en las variables de entorno de windows. Finalmente ejecuta la aplicación 'odbc_install.exe'.
     
  • Para utilizar OLEDB, lo mejor es descargar el paquete 'Oracle Data Access Components (ODAC) with Oracle Developer Tools for Visual Studio', de 32 bits, que incluye SQL Plus, drivers .NET, OLE DB y ODBC, Oracle Instant Client y Developer Tools for Visual Studio.

Instalacion de conectores Oracle ODAC
 

  • Si tienes algún problema con las instalaciones, otra opción bastante segura es instalar directamente un Oracle XE en tu máquina cliente, que también incluye el driver OLEDB, y no ocupa mucho más que el ODAC con las Tools. Nunca está de más disponer de una pequeña base de datos Oracle en la máquina que se va a conectar al server, aunque sólo sea para hacer pruebas. Puedes descargar el instalador de Oracle XE 11g desde aqui. Elige también la versión de 32 bits
     
  • Finalmente, otra buena opción para SSDT, pero sólo si tu versión de base de base de datos es SQL Server Enterprise o SQL Server Developer (en Express y Standard no sirve) es instalar y utilizar los conectores de SSIS para Oracle (y también para Teradata) de Attunity. Los proporciona directamente Microsoft, la conexión es mucho más sencilla y son más eficientes que los conectores OLE DB, .NET y ODBC.
     

Crear la conexión OLEDB a Oracle en SQL Server Data Tools

Si los drivers se han instalado bien, en SSDT, entre los proveedores de datos ha de aparecer un 'Oracle Provider for OLE DB', que es el que hay que seleccionar en el administrador de conexiones para configurar una nueva conexión al origen de datos Oracle. En la configuración de la conexión, como Nombre de servidor o de archivo, se informa el nombre que se ha dado en el TNSNAMES.ora a la instancia o servicio de Oracle.

Administrador de conexiones SSIS OLEDB a Oracle

 

Finalmente, si al darle al botón 'Probar conexión' después de haber configurado bien el TNSNAMES e introducir correctamente el nombre de usuario y password el resultado que recibes es un desconcertante 'ORA-12638: Credential retrieval failed', edita el fichero SQLNET.ora, en el mismo directorio donde está TNSNAMES.ora (oraclehome/network/admin), y si tienes la línea SQLNET.AUTHENTICATION_SERVICES= (NTS) cámbiala por SQLNET.AUTHENTICATION_SERVICES= (NONE), guarda todo y vuelve a probar, seguramente ese error desaparecerá.

 

Si además quieres crear un linked server en la base de datos, o aún tienes dudas sobre si instalar conectores de 32 o 64 bits, en este tema del foro que enlazo comento un poco más sobre conexiones a Oracle desde SQL Server.