SSIS: Microsoft SQL Server Integration Services

SSIS: Microsoft SQL Server Integration Services Dataprix 23 May, 2014 - 19:39

SSIS: Problemas para acceder a Oracle 10g desde entorno de 64 bits mediante Oledb

SSIS: Problemas para acceder a Oracle 10g desde entorno de 64 bits mediante Oledb il_masacratore 19 November, 2009 - 09:49

Si estamos intendo crear una tarea de flujo de datos que acceda a Oracle usando versiones de cliente igual o inferior a la 10g en entornos de 64bits nos podemos encontrar que al añadir las conexiones aparace un mensaje como el siguiente:

"Test connection failed because of an error in initializing provider. ORA-06413: Connection not open"

La causa del problema reside en que las herramientos de cliente (management studio) de sqlserver se instalan por defecto en la carpeta de archivos de programa con "(x86)" y la mayoria de componentes de management studio estan compilado para 32 bits. A esto falta sumarle un bug de oracle con el tratamiento de esta ruta con parentesis y ya tenemos algo que no funciona...
Soluciones o workarounds para este problema hay varios, que van desde usar directamente el cliente de oracle 11g hasta copiar/pegar los ficheros de la instalación y modificar las claves de registro relativas a SSIS y las rutas de DTExec.exe (ejecutable para paquetes ssis). También debemos cambiar la plataforma en las propiedades del proyecto por una de 32 bits y tener instalada la versión de cliente correspondiente. Aquí encontrareis algunas propuestas.

Por favor, antes de decidir que hacer hay que pensarselo dos veces y analizar si el problema lo podemos esquivar por la parte de la plataforma; si disponemos otra instalación de sqlserveradicional de 32 bits donde poder deployar nuestros paquetes ssis nos ahorraremos dolores de cabeza y perder el tiempo haciendo estas modificaciones. Recuerdo haber leído también que existen parches para Oracle que lo solución, o se puede optar directamente por instalar el cliente de la 11g etc...

Buena suerte

SSIS: Solución a dos errores sin motivo aparente cuando insertamos datos en MySql

SSIS: Solució a dos errors sense motiu aparent quan inserim dades en MySól il_masacratore 10 September, 2010 - 13:52

 

 

Per la raó que sigui potser haguem de desenvolupar un paquet de Microsoft Integration Services que ens mogui dades de qualsevol origen a una taula que es troba en una base de dades MySQL.

La primera intenció serà fer-ho mitjançant una ADO.NET Destination i el provider de MySQL per a la connexió. Si ho fem així per inserir les dades directament, en crear el destí, seleccionar la connexió i després seleccionem la taula apareixerà un error com el següent al comprovar tot amb la vista prèvia o en intentar fer les assignacions.

 

 

Aquest error es deu a la manera de compatibilitat sql ansi de la base de dades mysql on intentem carregar les dades. Per solucionar hem de connectar al servidor de MySQL i canviar la compatibilitat ansi de sql de la base de dades *:

 

 

TOCA:~# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 77

Server version: 5.0.51a-24+lenny3-log (Debian)

 

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

 

mysql> select @@global.sql_mode;

+-------------------+

| @@global.sql_mode |

+-------------------+

| |

+-------------------+

1 row in set (0.00 sec)

 

mysql> set global sql_mode='ANSI';

Query OK, 0 rows affected (0.00 sec)

 

mysql> select @@global.sql_mode;

+-------------------------------------------------------------+

| @@global.sql_mode |

+-------------------------------------------------------------+

| REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI |

+-------------------------------------------------------------+

1 row in set (0.00 sec)

 

mysql> exit

 

 

Si tornem a provar ja podrem tenir una vista prèvia de la taula o editar les assignacions entre columnes però ens trobarem un altre error en executar el paquet:

 

[ADO NET Destination [843]] Error: Excepció durant la inserció de dades.  El missatge retornat pel proveïdor és: Unknown column 'p1' in 'field list' "

El driver té un problema i no ens deixa treballar bé amb paràmetres (que és com es construeix les insercions de registre en el destino) així que hem de fer otro workaround para solucionar este problema: treballar amb ADO.NET Destination en destino però amb 1 origen ODBC en la connexió. Això unit al tema de la modificació del sql_mode de la destinació MySQL ens permetrà fer la càrrega correctament.

 

 


 

* Cal destacar que la compatibilitat la podem canviar a nivell global com en l'exemple o només a nivell de session (amb el que hauríem d'afegir l'execució d'un comandament en primera instància per modificar el valor de @ @ SESSION.sql_mode). Más info aquí. Més info aquí.