2010-05-10 23 views
21

Tengo un paquete SSIS con un flujo de control que contiene un montón de ejecutar tareas sql en una secuencia.ejecutar selectivamente la tarea en el flujo de control ssis

Necesito comprobar una bandera para cada una de las tareas y ejecutar la tarea si está configurada, si no saltear y pasar a la siguiente.

Cada una de estas tareas ejecuta un proceso almacenado. Entonces puedo verificar el proceso y "Volver" si no está configurado. Estaba buscando una solución "SSIS" si la hubiera.

TIA

PS

Respuesta

25

Entre sus tareas de flujo de control, haga clic en la flecha y seleccione Editar. Cuando haces esto, obtienes un diálogo que te permite verificar la "restricción" (éxito, finalización o falla) de la tarea, una "expresión" (es decir, puedes hacer que tu tarea execute sql devuelva un valor, almacenar ese valor en una variable, y verifique el valor de esa variable en una expresión para determinar si continuará por la ruta que está editando), una "expresión y una restricción" y una "expresión o restricción". Estos dos últimos son iguales excepto por la lógica. "Expresión y restricción" requiere una condición verdadera tanto en la expresión como en la restricción, "expresión o restricción" requiere una condición verdadera en solo una de las expresiones y la restricción.

+0

Solo tengo una ruta. Y los pasos en esa ruta necesitan verificar una bandera, si no están configurados, luego vaya al paso en la ruta. ¿ES posible con "restricción"? –

+0

No, Restricción solo comprueba el estado de ejecución de la tarea a la que está conectada su entrada. Si la tarea tiene éxito, entonces la prueba de restricción será verdadera si se establece en Correcto, si la tarea falla, entonces la prueba de restricción será verdadera si se establece en Fallo, Restricción es verdadera siempre que la tarea finaliza si se establece en Terminación. Quieres Expresión. En su proceso almacenado, devuelva el valor de su bandera como salida. Pon esa salida en una variable. En su camino use Expression y pruebe esa variable en contra de su condición. Si es verdadero, la ruta pasará al siguiente paso en su flujo. –

+0

¿Qué hay de la primera tarea? – GeorgiG

40

Creo que su pregunta era la misma que la mía en la que quería controlar la ejecución de una tarea "en línea" en mi flujo de control.

La manera más fácil que he encontrado no implica expresión en los conectores de datos entre los objetos de flujo de control, sino más bien el uso de expresiones en el objeto de control y el establecimiento del valor "Deshabilitar" utilizando una expresión. De esta forma en la ejecución, el objeto se omite o no se basa en la evaluación de la expresión.

Como ejemplo, quería ejecutar una "tarea Ejecutar SQL" para eliminar mis índices en función de si una variable llamada "Tipo de extracto" era igual a "Completa". Si fuera así, quería eliminar los índices en mis tablas antes de hacer mi carga completa.

+1

Buena captura, me había olvidado de las expresiones allí. Es fácil pasar por alto todos los lugares en SSIS que puede usar expresiones. Si pudiera votar su respuesta aún más, lo haría. ¡Gracias por responder esto! –

+0

¡Increíble! Voy a intentar eso. Gracias VM! – GeorgiG

Cuestiones relacionadas