Espero no haber malinterpretado la pregunta, pero una posible solución puede ser la que se describe a continuación.
Creé una muestra ForEach loop. El bucle en sí es un enumerador de elementos. Enumera los números 1, 2, 3. El valor real se almacena en una variable llamada LoopVariable
.
Hay otra variable llamada FirstShouldRun
que es una variable booleana que muestra la primera tarea en el bucle foreach debe runned o no. Establecí la propiedad EvaluateAsExpression de esta variable en true, y su expresión es (@[User::LoopVariable] % 2) == 0
. Me gustaría demostrar con esto que cada dos por tres se debe comenzar la primera tarea.
Las dos tareas no hacen nada mucho pero muestran un cuadro de mensaje que muestra la tarea se ha iniciado.
Inicié el paquete y primero y la tercera vez que la primera tarea no se inició. En el segundo ciclo, apareció MessageBox (que muestra "First started"
).
Después de eso, debe establecer la variable FirstShouldRun
como desee.
Como mencioné en mi primer comentario al OP, esta solución se basa en la idea de Amos Wood escrita en another answer.
Loon en esta publicación http://stackoverflow.com/questions/2804007/selectively-execute-task-in-ssis-control-flow. Verifique la respuesta de Amos Wood que creo que será la adecuada para usted. – luviktor
@luviktor Tenga en cuenta que cuando la tarea está desactivada no puede habilitarla de nuevo automáticamente. – fancyPants