Fran Diaz

Reporting Services, Business Intelligence, tecnologías Microsoft y otros

Email Notifications

Recent Posts

Tags

News

Community

Comunidades

  • Foro MSDN Español: Colaborador
  • CartujaDotNet

Webs Amigas

Archives

[SSIS] Extracción desde Oracle con parámetros

Este caso que voy a explicar lo he utilizado con Oracle pero también os puede servir para obtener los datos desde una base de datos no SQL Server, y digo ‘no SQL Server’ porque para este es más fácil hacerlo sin liarla tanto Sonrisa.

Vamos a exponer el escenario para que entendamos bien que es lo que quiero hacer:

La idea es la extracción de datos desde Oracle de una determinada fecha en adelante y/o los datos que cambiaron en la tabla de la que traigo los datos. 
¿Cómo lo traigo? Pues me pillo un componente Data Flow Task y dentro de este uso un OLE DB Source al que conectarme (el resto hasta el destino según vuestras necesidades).

Primer intento. En el OLE DB Source elijo la conexión a Oracle en Data access mode selecciono SQL Command y escribo la siguiente sentencia:

Select [MisCampos] From MiTabla Where Fecha_Registro >= ?

Si el origen fuese un SQL Server ahora podría seleccionar parameters y asignar alguna variable que tuviese por ahí y listo, pero como es una fuente diferente no puede ser así.

Solución:

  1. Creamos dos variables, una que contenga el SQL (de tipo string)  y la otra la fecha. 
  2. Para la variable que contendrá el SQL no situamos en el panel de variables y pulsamos F4 para pasar a las propiedades de esta y cambiamos la propiedad EvaluateAsExpression a true. En la propiedad Expression montamos la siguiente consulta:

    “Select [MisCampos] From MiTabla Where Fecha_Registro” + @[User:MiVariableFecha]
  3. En el OLE DB Source seleccionamos el origen de datos, en data access mode seleccionamos sql command from variable y a continuación seleccionamos la variable sql (o como la llamemos).

Con esto estaría todo listo en la práctica, pero hay algunas consideraciones a tener en cuenta y que te pueden dar algún quebradero de cabeza.

  • Si la variable SQL que tenemos hay parámetros, hay que tener en cuenta que si la/s variable/s son diferentes a string tendrás que hacer una conversión sino no te funcionará y al probar la expresión te producirá una excepción.
  • Si ya tienes montada la estructura desde el origen al destino, con conversiones, splits, merges y todo lo necesario para extraer tus datos directamente de una tabla sin parámetros y ahora quieres hacerlo de esta forma te puede pasar que el componente se quede ‘pillado’ y te de errores raros.
    • Solución 1. Lo montas de nuevo todo
    • Solución 2. Puedes probar a refrescar la variable quitando o agregando campos para ver si refresca.
  • Si tienes más transformaciones entre el origen y el destino, tendrás que abrir las que te aparezcan con errores y mapear los campos (suponiendo que en la variable que has creado nueva venga con los mismos nombres y no diferentes) o en su defecto quitar y ponerlos de nuevo.

Igual hay algún caso que se me escape o que no me haya pasado, así es que si quieres comentarlo adelante Guiño!!

Un Saludo

Posted: 12/4/2012 11:21 por Fran Díaz | con 1 comment(s) |
Comparte este post:

Comentarios

Miemblogs ha opinado:

Este caso que voy a explicar lo he utilizado con Oracle pero también os puede servir para obtener los

# April 12, 2012 11:50 AM