SSIS – Asignación dinámica de nombres a ficheros de destino de Excel

Buenos días a todos, en este post voy a explicitar las acciones requeridas para asignar dinámicamente los nombres a los ficheros de destino de Excel (ficheros XLS). Este caso es típico cuando se pretende hacer una exportación diaria de información por ejemplo. Los pasos a seguir son:
1. Crear una variable a nivel de Package de tipo String, la cual va a contener el nombre del fichero de destino.
2. Contar con un Script component en el Data Flow, en el que debemos armar el nombre del fichero concatenando fechas u otras cadenas según sea el nombre que deseamos formar, y posteriormente asignarle dicho nombre a la variable que creamos en el punto 1. (Para ver cómo trabajar con variables en un Script haga click aqui)
3. En la Excel Connection de destino debemos dirigirnos a sus propiedades, Expressions y a la propiedad ConnectionString asignarle la variable creada en el punto 1.


Si son tus primeros pasos en SSIS seguramente no comprenderán demasiado como armar todo el package, si eso sucede les recomiendo que lean los primeros posts en donde explico más detalladamente este tema.
Espero les sirva mi post, y como siempre espero sus comentarios… Saludos!

7 comentarios:

luru32 dijo...

Miguel, esta muy interesante su post sobre asignación dinámica de nombres pero no logro hacer que me funcione. Necesito configurar dinamicamente el nombre del archivo de salida de mi proceso. El destino es un archivo plano y al asignar en Expressions el Name a mi variable lo que hace es cambiarme el nombre del administrador de conexión del archivo plano. Podria ayudarme, no se que estoy haciendo mal. Muchas gracias y saludos desde Colombia.

Miguel A. Ciacci dijo...

Hola, como estás? el ejemplo planteado en el post es sobre conexiones de excel y no de archivos planos. En este momento no dispongo de mucho tiempo, pero en cuanto pueda veo cual puede ser tu problema. Saludos

luru32 dijo...

Hola Miguel, el problema que tenía era que estaba asignando mi variable a la propiedad Name del administrador de conexión y no a la propiedad ConnectionString que es el que determina el path de salida del archivo plano. En el post (Punto 3) se hace referencia a la propiedad Name de la Connection Excel Destino, no sería mejor asignar la variable a la propiedad ConnectionString del Connection Excel?

Miguel A. Ciacci dijo...

Gracias Luru por tu aporte, el post ya fue corregido. saludos

luru32 dijo...

Miguel buenos días,

Necesito su ayuda ya que no se como solucionar el siguiente caso:

Resulta que cuando pase al ambiente de certificación y producción mi paquete (Origen: SQL Sever 2005, Destino Archivo plano) resulta que el archivo se necesita que se almacene en un directorio compartido de un equipo remoto... para lo cual yo solamente le cambie el valor de la propiedad ConnectionString del administrador de conexión del archivo plano. Resulta que el servidor donde se encuentra instalado mi paquete se encuentra fuera del dominio y para conectarse a la maquina remota donde se guardara el archivo se necesita proporcionar un login y un password el cual no se como pasarle desde el paquete.

De antemano muchas gracias por la ayuda que me pueda proporcionar.

Saludos Cordiales.

Anónimo dijo...

Hola Miguel, he tratado de seguir tus indicaciones y me aparece el siguiente mensaje:
[Excel Destination [1461]] Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Destino" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.

Que podrá suceder?
Gracias.

Edgar Reyes dijo...

¿Como puedo extraer información en base a codigos de items. ejemplo.

Leo un archivo plano con las siguientes caracteristicas.
ID COD CANT DESC
01227, 1, 27085.82, Ventas
01227, 101, 67, No. Ordenes
01227, 102, 7161.73, Ventas
01227, 105, 48.15,Gasto Carnes
01227, 11, 4333.78,IVA

El problema es: ¿como puedo agrupar por determinados numeros de codigo, por ejemplo, agrupar los codigos 101, 102 y 103 en una columna. los 1 en otra y los 11 en otra.
Gracias de antemano