Creando paquetes de SSIS con .NET – Creando Execute Package Task y Execute Process Task
Se pueden crear paquetes de SQL Server Integration Services (SSIS) programáticamente con .NET, haciendo uso de las librerías que incluye SQL Server 2008. En este post se explica cómo crear Execute Package Task y Execute Process Task.
Serie Creando paquetes de SSIS con .NET
Continuando esta serie y partiendo del post inicial donde agregamos los elementos basicos para crear un paquete de SSIS con C#/.NET (puedes guiarte con el primer post de esta serie – Agregando elementos básicos), vamos a agregar un Execute Package Task y un Execute Process Task.
Execute Package Task
Este componente nos permite ejecutar un paquete de SSIS (.dtsx) desde otro paquete. Este tipo de componente nos puede ayudar para orquestar la ejecución de muchas paquetes y combinarlo con otras operaciones.
Para crear este componente utilizaremos el siguiente código:
//Para este componente se necesita un file connection, en este ejemplo
//se parte de que el componente ya está creado y se llama dtsx.Origen
//En posts anteriores de esta serie se explica cómo crearlo por código
Executable ExePKGexe = pkg.Executables.Add("STOCK:ExecutePackageTask");
TaskHost exePKG = ExePKGexe as TaskHost;
exePKG.Name = "Ejecutar un DTSX";
exePKG.Properties["Connection"].SetValue(exePKG, "dtsx.Origen");
El código es bastante corto ya que sólo debemos definir la conexión que usará este componente debido a que el objeto de conexión es el que contiene la información del paquete a ejecutar.
Execute Process Task
Este componente nos permite ejecutar algún proceso con o sin parámetros desde un paquete de SSIS. Para este ejemplo vamos a ejecutar Powershell.exe con algunos parámetros. Si lo construimos gráficamente sería algo como:
Para crear este componente utilizaremos el siguiente código:
Executable exeProTaskexe = pkg.Executables.Add("STOCK:ExecuteProcessTask");
TaskHost exeProTask = exeProTaskexe as TaskHost;
exeProTask.Name = "Ejecutar Powershell con parámetros";
exeProTask.Properties["Executable"].SetValue(exeProTask, @"C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe");
exeProTask.Properties["Arguments"].SetValue(exeProTask, "-command \"get-process;return 0;\"");
exeProTask.Properties["SuccessValue"].SetValue(exeProTask, 0);
exeProTask.Properties["WindowStyle"].SetValue(exeProTask, 0);
Seguiré indagando en cómo crear más componentes para un paquete SSIS desde C#/.NET.
Nos leemos,



Hola compañero como estas, me ha gustado el tema y de hecho he aprendido bastante, al comienzo no me funcionaban pero porque yo intentaba ejecurlos en 2005 pero simplemente lo que termina en 100 debe terminar en 90 jejeje y ahi funciona bueno mas otros detalles. Sin embargo quisiera molestarte con una pregunta. Estoy haciendo un ejercicio pero con un script component. Estoy usando este componente como origen para leer desde unas tablas parametrizadas anteriormente la tabla origen y los campos desde donde voy a leer el origen, entonces creo la cadena de conexion dinamicamente. hasta ahí no le veo mucho complique. Pero luego lo que necesito es usar otro x componente que cuando recorra cada registro ejecute un sp quien es el que graba en la base, bueno ademas valida la estructura de los campos. ¿Para este segundo componente crees que deba ser un script component?. Agradezco cualquier comentario, guía, documento sobre el script component la verdad sé muy poco sobre él
Hola Nilson, en este caso que me planteas te recomiendo uses un container de loop, que te permitira ejecutar diferentes componentes para cada registro que estes recorriendo desde un origen de datos.
Puedes comenzar indagando mas acerca de estos:
SSIS For Loop Container http://social.technet.microsoft.com/wiki/contents/articles/ssis-for-loop-container.aspx
Foreach Loop Container http://technet.microsoft.com/en-us/library/ms141724(SQL.100).aspx
Revisa por alli y me comentas que tal.
Saludos,
Hola compañero, por favor sabes donde encontrar algún ejemplo sobre como crear el componente “scritp component” por código, como conectarlo al conexion manager (ADO.NET) y como adicionarle el scritp?, he tenido muchas dificultades con este componente, y cualquier ayuda te lo agradecería?
Hola Nilson, el script component lleva varios esquemas basados en XML para guardar lo que construyes en el… actualmente indago al respecto. Te dejaré saber por esta via si consigo algo y lo posteo.
Saludos,