Uso de restricciones de precedencia para evitar Error de acceso a datos

En estos días hemos estado ocupados transformando flujos de datos. Ahora voy a seguir aprovechando el paquete con el que hemos trabajado para demostrar la eficacia de las Restricciones de precedencia para evitar errores en la ejecución del Flujo de control de un paquete SSIS 2008.

En mi ejemplo, lo primero que hago es duplicar el paquete EjemploConversiónDatos para que se mantenga tal cual y creo uno nuevo que tiene este aspecto

seistareas

Ejecuto el paquete, y como vemos se produce una ejecución paralela de tareas

ejecutotareas1

Pasa el tiempo … ejecutando … y sas !! Se nos ha roto el paquete

ejecutotareaserror1

Lo que ha ocurrido es que dos tareas están intentando acceder al mismo archivo, una lo consigue, la primera que llega 🙂 y la otra, falla por lo que falla el paquete. Veamos qué nos dice la ficha Resultados

mensajeerror

La tarea que afectó será la tarea que estaba también en ejecución

TareaAmarillo

Por lo que vamos a establecer Restricción de Precedencia entre estas dos tareas, es decir, ahora vamos a configurar una tarea para que no se empiece a ejecutar hasta tanto no termine la anterior. Al arrastrar la flecha de salida de una tarea a otra muestra el Editor de Restricciones de Precedencia

RestriccionPrecedencia

Volvemos a ejecutar

TareasConRestricc

Aquí vemos que la tarea enlazada mantiene su color blanco, no inicia hasta tanto no termine la tarea que inicia.

Pasa el tiempo … ejecutando … y sas !! Se nos ha roto el paquete de nuevo !!!

TareasConRestriccError

Mismo problema, mismo error en otra tarea, misma solución 🙂 Ejecutando …

TareasConRestricc2

Pasa el tiempo … ejecutando … y sas !! Solucionado.

TareasConRestriccOK

Con este ejemplo hemos querido jugar con las restricciones de precedencia, de las que queda aún mucho por decir; pero al menos ahora vemos que podemos y debemos !! trabajar con tareas de forma paralela, siempre que una tarea no sirva como origen para otra o como en este caso, no provoque error la ejecución simultánea.

La próxima vez hablaremos de Visores en Flujos de Datos.