Breaking

Post Top Ad

Your Ad Spot

domingo, 15 de diciembre de 2019

Contenedores de secuencia en paquetes SSIS

Este artículo explora el contenedor de secuencia en el paquete SSIS con ejemplos.

Introducción

El flujo de control del paquete SSIS es útil para ejecutar múltiples tareas y diseñar el flujo de trabajo para la ejecución. Un contenedor en el flujo de control juega un papel esencial en el diseño del flujo de trabajo. Podemos ver los siguientes contenedores en SSIS Toolbox:
Caja de herramientas de SSIS

Para contenedor de bucle

Podemos usar este contenedor para ejecutar todas las tareas internas para un número fijo de ejecuciones. Puede considerarlo equivalente al bucle For en el lenguaje de programación.

Contenedor de bucle Foreach

Funciona de manera similar al bucle For; sin embargo, definimos una colección para determinar el número de ejecuciones del bucle For en lugar de un número fijo de ejecuciones. Puede leer más sobre el uso de contenedores SSIS ForEach Loop para procesar archivos en el artículo Fecha de pedido .

Contenedor de secuencia

El contenedor de secuencia en SSIS es útil para agrupar tareas juntas. Podemos dividir el flujo de control en múltiples unidades lógicas usando esto. Exploraremos más sobre el contenedor de secuencia en este artículo.

Descripción general del contenedor de secuencias en SSIS

Podemos considerar un contenedor de secuencia como un subconjunto de un paquete SSIS. Actúa como un único punto de control para las tareas definidas dentro de un contenedor.
Podemos resumir los beneficios de un contenedor de secuencia, como se muestra a continuación:
  • Podemos definir variables bajo el alcance de las tareas dentro de un contenedor de secuencia
  • Sigue una relación padre-hijo con las tareas subyacentes. Podemos cambiar la propiedad de un contenedor de secuencia (padre), y se propaga a tareas internas (hijo)
  • Proporciona flexibilidad para gestionar las tareas en un contenedor.

Uso práctico del contenedor de secuencias en SSIS

Exploremos el contenedor de secuencias prácticamente.
Suponga que tiene un flujo de control para ejecutar diariamente las siguientes tareas de SQL:
Tareas del paquete SSIS
Actualmente, tenemos un procedimiento similar en cada tarea que se ejecuta diariamente. También se ejecuta en un horario fijo por el Agente SQL Server. Ahora, debido a algunos requisitos comerciales, su equipo de desarrollo creó procedimientos almacenados separados para cada día de la semana.
Podemos crear paquetes SSIS separados para cada día y programar trabajos de agente SQL. Aumenta la complejidad y flexibilidad para administrar el paquete:
  • Paquete SSIS separado para cada día: 7 paquetes SSIS
  • Trabajo separado del Agente SQL Server para cada paquete SSIS: 7 trabajos de SQL Server
¿Nos sentimos cómodos al hacer esto? No, cierto!
Sequence Container en el paquete SSIS nos resuelve este problema. Exploremos la solución.
Arrastre un contenedor de secuencia desde la caja de herramientas SSIS al área de flujo de control. Actualmente, no tiene ninguna tarea asociada:
Arrastre un contenedor de secuencia desde la caja de herramientas SSIS para controlar el área de flujo
Haga doble clic en el contenedor de secuencia y cámbiele el nombre a domingo como se muestra a continuación:
Contenedor de secuencia vacía en SSIS
Ahora, arrastre y suelte la tarea 1 de SQL dentro del contenedor Sunday. Recibirá el siguiente mensaje de error de que no puede mover una tarea conectada a un nuevo contenedor. Tarea 1 de SQL conectada con otras tareas utilizando el contenedor de precedencia:
Mensaje de error
Podemos eliminar las restricciones de precedencia o seleccionar todas las tareas de SQL juntas y movernos en el contenedor.
Una vez que seleccionamos todas las tareas juntas, puede ver contornos en negrita para cada tarea:
Seleccionar todas las tareas juntas
Ahora, muévalos juntos dentro del contenedor de secuencia del domingo en SSIS y cambie el tamaño del contenedor para que podamos arreglar otro contenedor de secuencia también en la pantalla. Cambié el nombre de las tareas y les di un nombre más corto:
Mover tareas en un contenedor
Haga copias similares del contenedor de secuencias en el paquete SSIS para el resto de la semana con los scripts apropiados.
Nota: No estamos cubriendo la configuración de tareas individuales dentro del contenedor. Debe tener conocimientos básicos de SSIS antes de usar este artículo.
Ahora, mi paquete SSIS se ve a continuación con un contenedor de secuencia en SSIS para cada día de la semana.
El paquete SSIS se ve a continuación con el contenedor de secuencia
Actualmente, si ejecutamos el paquete SSIS, ejecutará cada contenedor de secuencia individualmente.
En la siguiente captura de pantalla, podemos ver que para cada contenedor de secuencia, la tarea 1 falla y marca que el contenedor falla:
Error de mensajes
No ejecutó la tarea 3 porque la tarea 3 contiene múltiples precedentes y, por defecto, todas las entradas a una tarea deben ser verdaderas.
Haga clic derecho en la precedencia y modifíquelo a Lógico O:
editor de precedencia
Cambia las líneas de precedencia sólida a líneas punteadas. Solucione el problema y ejecute el paquete y podemos ver que cada secuencia contiene ejecuciones dentro de la tarea individualmente:
Configuración SSIS
Ahora, necesitamos ejecutar el contenedor de secuencia en función del día de la semana. Para esto, haga clic derecho en el paquete y agregue una variable:
Variables
Haga clic en Agregar variable y proporcione un nombre, tipo de datos para la variable. Por defecto, el alcance variable está en el nivel del paquete. Usaremos esta variable para el día actual de la semana:
Agregar variable
Agregue una nueva tarea de ejecución de SQL y cambie el nombre para encontrar el día de la semana:
Agregue una nueva tarea de ejecución de SQL y cambie el nombre para encontrar el día de la semana.
Haga doble clic en esta tarea y se abrirá la ventana del editor. Realice los siguientes cambios en este editor:
  1. Conjunto de resultados: fila única
  2. Conexión: especifique los detalles de conexión de la instancia de SQL
  3. SQLStatement: Copie y pegue el siguiente T-SQL en este editor
Esta consulta utiliza la función DATENAME y la función GETDATE para encontrar el día de la semana de hoy. Por ejemplo, regresa el miércoles para el 27/11/2019.
Editor de tareas SQL
Navegue hasta el conjunto de resultados y asigne el resultado de la consulta con la variable SSIS:
Configurar conjunto de resultados
Haga clic en Aceptar y únase a la restricción de precedencia de la tarea SQL al contenedor de secuencia dominical en SSIS:
Agregar restricción de precedencia
Haga doble clic en esta restricción de precedencia y cambie la propiedad de la siguiente manera:
  • Operación de evaluación: expresión y restricción
  • Valor: éxito
  • Expresión:
editor de restricción de precedencia
Puede hacer clic en la prueba para verificar la expresión. Da el siguiente mensaje para una validación exitosa:
validación de expresión
Haga clic en Aceptar y puede ver la siguiente configuración para la restricción de precedencia con el contenedor de secuencia dominical en SSIS:
restricción de precedencia con expresión
Del mismo modo, agregue la restricción de precedencia de la tarea SQL al contenedor de secuencia respectivo en SSIS. Asegúrese de cambiar la expresión para el día particular de la semana. Puede consultar la siguiente tabla para las expresiones:
lunes
@ [Usuario :: Día] == "Lunes"
martes
@ [Usuario :: Día] == "Martes"
miércoles
@ [Usuario :: Día] == "Miércoles"
jueves
@ [Usuario :: Día] == "jueves"
viernes
@ [Usuario :: Día] == "Viernes"
sábado
@ [Usuario :: Día] == "Sábado"
Ahora, mi configuración de paquete SSIS se ve según la siguiente captura de pantalla:
Paquete completo
El flujo de este paquete SSIS será:
  • Primero, ejecuta la tarea SQL Buscar el día de la semana
  • Asigna el valor del día de la semana a la variable SSIS
  • En la restricción de precedencia, definimos la expresión para verificar el día de la semana
  • Comprueba la expresión y ejecuta las restricciones de secuencia, si la expresión se evalúa como verdadera
Por ejemplo, estoy ejecutando este paquete el 27/11/2019 que es miércoles. Ejecutemos el paquete SSIS. Debería ejecutar un contenedor de secuencia para el miércoles:
Calendario
Aquí vamos. En la siguiente captura de pantalla, podemos ver que solo se ejecuta el contenedor de la Secuencia del miércoles en SSIS:
Ejecutar paquete basado en el día de la semana.

Una propiedad adicional de un contenedor de secuencia en SSIS

También podemos deshabilitar un contenedor de secuencia para excluirlo de la ejecución. Haga clic derecho sobre él y haga clic en Desactivar :
deshabilitar un contenedor de secuencia
Deshabilita el contenedor de secuencia. También atenuó la tarea en el interior:
deshabilitar un contenedor de secuencia
También podemos diseñar contenedores de secuencia anidados. En la siguiente captura de pantalla, agregamos un contenedor de secuencia dentro del contenedor de secuencia dominical. Una vez que la tarea 2 es exitosa, desencadena la ejecución del contenedor anidado:
Contenedor de secuencia anidada
Podemos contraer o expandir un contenedor de secuencia en el paquete SSIS con un clic en la flecha como se muestra a continuación:
Expandir o contraer el contenedor
También podemos configurar la propiedad del contenedor de secuencia. Pocas propiedades útiles son:
  • FailPackageOnFailure : controla si el comportamiento de falla del paquete en caso de falla ejecutable
  • MaximumErrorCount : muestra el número máximo de errores dentro de un contenedor de secuencia en SSIS. Si el número de errores es menor que este parámetro, un contenedor de secuencia se marca con éxito incluso en caso de falla. El valor predeterminado es 1
  • Nivel de aislamiento: de forma predeterminada, admite el nivel de aislamiento Serializable
  • Deshabilitar : podemos habilitar o deshabilitar un contenedor de secuencia en un paquete SSIS usando esta propiedad
Propiedades del contenedor de secuencia

Conclusión


En este artículo, demostramos el contenedor de secuencia en el paquete SSIS. Es útil para combinar tareas y definir el flujo de trabajo del paquete. Debe practicar este contenedor según sus requisitos y usarlo.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas