Tarea Ejecutar paquete
La tarea Ejecutar paquete amplía las capacidades empresariales de Integration Services, ya que permite que los paquetes ejecuten otros paquetes como parte de un flujo de trabajo.
Puede usar la tarea Ejecutar paquete para los siguientes fines:
Descomponer un flujo de trabajo de paquetes complejo. Esta tarea permite descomponer el flujo de trabajo en varios paquetes, más fáciles de leer, probar y mantener. Por ejemplo, si está cargando datos en un esquema de estrella, puede crear un paquete independiente para llenar cada dimensión y la tabla de hechos.
Reutilizar partes de paquetes. Otros paquetes pueden reutilizar partes de un flujo de trabajo de paquete. Por ejemplo, es posible generar un módulo de extracción de datos al que se pueda llamar desde diferentes paquetes. Cada paquete que llama al módulo de extracción puede realizar distintas operaciones de limpieza, filtrado o agregación de datos.
Agrupar unidades de trabajo. Las unidades de trabajo pueden encapsularse en paquetes independientes y combinarse como componentes transaccionales con el flujo de trabajo de un paquete primario. Por ejemplo, el paquete primario ejecuta los paquetes accesorios y, en función del resultado de la ejecución de los paquetes de accesorios, confirma o revierte la transacción.
Controlar la seguridad de los paquetes. Los autores de paquetes necesitan tener acceso a solo una parte de una solución de varios paquetes. Al separar un paquete en varios paquetes, puede proporcionar un mayor nivel de seguridad, ya que puede conceder a un autor acceso únicamente a los paquetes relevantes.
Un paquete que ejecuta otros paquetes se suele denominar paquete primario y los paquetes ejecutados por un flujo de trabajo principal se denominan paquetes secundarios.
Integration Services incluye tareas que realizan operaciones de flujo de trabajo, como ejecutar archivos ejecutables y por lotes. Para obtener más información, vea Tarea Ejecutar proceso.
Ejecutar paquetes
La tarea Ejecutar paquete puede ejecutar paquetes secundarios incluidos en el mismo proyecto que contiene el paquete primario. Para seleccionar un paquete secundario del proyecto, establezca la propiedad ReferenceType en Referencia de proyecto y, a continuación, establezca la propiedad PackageNameFromProjectReference.
[!NOTA]
La opción ReferenceType es de solo lectura y se establece en Referencia externa si el proyecto que contiene el paquete no se ha convertido al modelo de implementación del proyecto. Para obtener más información acerca de las conversiones, vea Implementar proyectos en el servidor de Integration Services.
La tarea Ejecutar paquete también puede ejecutar paquetes almacenados en la base de datos SQL Server msdb y paquetes almacenados en el sistema de archivos. La tarea usa un administrador de conexiones OLE DB para conectar con SQL Server o un administrador de conexiones de archivos para tener acceso al sistema de archivos. Para obtener más información, vea Administrador de conexiones OLE DB y Administrador de conexiones de archivos planos.
La tarea Ejecutar paquete también puede ejecutar un plan de mantenimiento de bases de datos, que permite administrar paquetes de SSIS y planes de mantenimiento de bases de datos en la misma solución Integration Services. Un plan de mantenimiento de bases de datos es similar a un paquete de SSIS, pero un plan solo puede incluir tareas de mantenimiento de bases de datos y siempre se almacena en la base de datos msdb.
Si elige un paquete almacenado en el sistema de archivos, debe proporcionar el nombre y la ubicación del paquete. El paquete puede residir en cualquier parte del sistema de archivos; no tiene que estar en la misma carpeta que el paquete primario.
El paquete secundario puede ejecutarse en el proceso del paquete primario o ejecutarse en su propio proceso. La ejecución del paquete secundario en su propio proceso requiere más memoria, pero ofrece mayor flexibilidad. Por ejemplo, si se produce un error del proceso secundario, el proceso primario podrá seguir ejecutándose.
Sin embargo, a veces puede desearse que el paquete primario y los paquetes secundarios no completen su ejecución como una unidad. También es posible que no desee agregar la sobrecarga de otro proceso. Por ejemplo, si se produce un error en un proceso secundario y el procesamiento posterior del proceso primario del paquete depende de que el proceso secundario se complete correctamente, el paquete secundario deberá ejecutarse en el proceso del paquete primario.
De forma predeterminada, la propiedad ExecuteOutOfProcess de la tarea Ejecutar paquete se establece en False, y el paquete secundario se ejecuta en el mismo proceso que el paquete primario. Si establece esta propiedad en True, el paquete secundario se ejecuta en un proceso independiente. Esto puede ralentizar el inicio del paquete secundario. Además, si establece la propiedad en True, no se podrá depurar el paquete si realizó únicamente una instalación de herramientas; deberá instalar el producto. Debe instalar Integration Services. Para obtener más información, vea Instalar Integration Services.
Extender transacciones
La transacción utilizada por el paquete primario puede ampliarse al paquete secundario; por tanto, puede confirmarse o revertirse el trabajo realizado por ambos paquetes. Por ejemplo, las inserciones en la base de datos realizadas por el paquete primario pueden confirmarse o revertirse en función de las inserciones en la base de datos realizadas por el paquete secundario y viceversa. Para obtener más información, vea Transacciones heredadas.
Propagar detalles de registro
El paquete secundario ejecutado por la tarea Ejecutar paquete puede estar configurado o no para usar registro, pero el paquete secundario siempre reenviará los detalles de registro al paquete primario. Si la tarea Ejecutar paquete está configurada para usar registro, la tarea registra los detalles del paquete secundario. Para obtener más información, vea Registro de Integration Services (SSIS).
Pasar valores a paquetes secundarios
Frecuentemente, un paquete secundario utiliza valores que le pasa otro paquete que lo llama (generalmente el paquete primario). Utilizar valores de un paquete primario es útil en escenarios como el siguiente:
Se asignan partes de un flujo de trabajo más grande a paquetes diferentes. Por ejemplo, un paquete descarga datos todas las noches, resume los datos, asigna valores de datos de resumen a variables y después pasa los valores a otro paquete para un procesamiento adicional de los datos.
El paquete primario coordina dinámicamente las tareas de un paquete secundario. Por ejemplo, el paquete primario determina el número de días del mes actual y asigna el número a una variable, y el paquete secundario realiza una tarea ese número de veces.
Un paquete secundario requiere acceso a datos derivados dinámicamente por el paquete primario. Por ejemplo, el paquete primario extrae datos de una tabla y carga el conjunto de filas en una variable y el paquete secundario realiza operaciones adicionales en los datos.
Puede utilizar los métodos siguientes para pasar valores a un paquete secundario:
Configuraciones de paquetes
Integration Services proporciona un tipo configuración, la configuración de variable de paquete primario, para pasar valores de paquetes primarios a paquetes secundarios. La configuración se crea en el paquete secundario y utiliza una variable de paquete primario. Se asigna la configuración a una variable del paquete secundario o a la propiedad de un objeto en el paquete secundario. También se puede usar la variable en los scripts usados por la tarea Script o el componente de script.
Parámetros
Puede configurar la tarea Ejecutar paquete para asignar variables o parámetros del paquete primario o bien, parámetros del proyecto a los parámetros del paquete secundario. El proyecto debe utilizar el modelo de implementación del proyecto y el paquete secundario debe estar incluido en el mismo proyecto que contiene el paquete primario. Para obtener más información, vea Editor de la tarea Ejecutar paquete.
[!NOTA]
Si el parámetro del paquete secundario no es confidencial y se asigna a un parámetro primario que sea confidencial, el paquete secundario no podrá ejecutarse.
Se admiten las siguientes condiciones de asignación:
-
Un parámetro de paquete secundario confidencial se asigna a un parámetro principal confidencial
-
Un parámetro de paquete secundario confidencial se asigna a un parámetro principal no confidencial
-
Un parámetro de paquete secundario no confidencial se asigna a un parámetro principal no confidencial
-
La variable de paquete primario puede definirse en el ámbito de la tarea Ejecutar paquete o en un contenedor primario como el paquete. Si hay varias variables con el mismo nombre, se usa la variable definida en el ámbito de la tarea Ejecutar paquete o la variable más cercana en el ámbito a la tarea.
Para obtener más información, vea Usar los valores de variables y parámetros en un paquete secundario.
Obtener acceso a variables de paquetes primarios
Los paquetes secundarios pueden tener acceso a variables de paquetes primarios mediante la tarea Script. Al escribir el nombre de la variable de paquete primario en la página Script del Editor de la tarea Script, no incluya Usuario: en el nombre de la variable. De lo contrario, el paquete secundario no podrá encontrar la variable al ejecutar el paquete primario. Para obtener más información acerca del uso de la tarea Script para obtener acceso a variables de paquetes primarios, vea esta entrada de blog, SSIS y cómo obtener acceso a variables en un paquete primario, en consultingblogs.emc.com.
Configurar la tarea Ejecutar paquete
Puede establecer propiedades a través del Diseñador SSIS o mediante programación.
Para obtener más información acerca de las propiedades que puede establecer en el Diseñador SSIS, haga clic en uno de los temas siguientes:
Para obtener más información sobre cómo establecer estas propiedades en el Diseñador SSIS, haga clic en el siguiente tema:
Configurar la tarea Ejecutar paquete mediante programación
Para obtener más información sobre cómo establecer estas propiedades mediante programación, haga clic en el tema siguiente:
Contenido relacionado
Entrada de blog, sobre SSIS y si se deben ejecutar paquetes secundarios en proceso o fuera de proceso, en consultingblogs.emc.com.
Entrada de blog, SSIS y cómo obtener acceso a variables en un paquete primario, en consultingblogs.emc.com.
|