¿Cómo continúo después de una falla en SSIS?

12

Quiero implementar algo como lo siguiente: ingrese la descripción de la imagen aquí

En este paquete, quiero recorrer una lista de nombres de bases de datos, modificando dinámicamente la configuración del administrador de conexión.

Sin embargo, la primera falla en "Probar conexión" detendrá y fallará la ejecución del paquete.

Pero me gustaría continuar mi bucle Foreach. Tengo la sensación de que esto debería ser posible (de lo contrario, ¿cuál es el caso de uso de estas flechas rojas de falla?)

Las cosas que he intentado incluyen jugar con "MaximumErrorCount".

Michael J Swart
fuente

Respuestas:

12

Para responder la pregunta que le hice, es posible continuar después de fallas asegurándose de que MaximumErrorCount sea cero para la tarea y sus contenedores principales ... En este caso, eso significa la tarea "Probar conexión", el contenedor "foreach" y el paquete en sí.

Aunque terminé haciendo algo diferente. Y Verificar una conexión de Jamie Thomson antes de usarlo fue útil aquí. Esto es lo que hice:

Reemplacé la tarea Probar conexión con una tarea de script. La tarea del guión era casi exactamente como el guión de Jamie, excepto que yo

  • solo usé un administrador de conexión, no todos,
  • el resultado de la tarea siempre fue exitoso
  • y configuré una nueva variable "Usuario :: ConnectionSucceeded" al resultado de la prueba de conexión.

También cambié las flechas que salen de la tarea de conexión de prueba para evaluar expresiones, evalúan:

  • @ [Usuario :: ConnectionSucceed] == Verdadero
  • @ [Usuario :: ConnectionSucceed] == Falso

respectivamente.

También tuve que recordar editar las restricciones múltiples que entraban en la tarea "Actualizar LastMonitored". Los cambié para usar un "O" lógico.

Así es como se ve mi paquete SSIS ahora: nuevo paquete

Michael J Swart
fuente
1

La manera fácil...

Haga doble clic en la restricción de precedencia (la línea verde) después de la tarea "Probar conexión". Debería ver "Opciones de restricción", hacer clic en la lista desplegable "Valor" y seleccionar "Finalización". Esto le indica a su paquete que continúe ejecutándose después de completar la tarea, independientemente de si falla.

Nota: No cambie la lista desplegable "Operación de evaluación" de "Restricción" a menos que desee agregar una Expresión para evaluar después de que la tarea se haya completado. También mantenga la restricción en "AND lógico".

Espero que esto ayude.

Usando la restricción de precedencia

Un Eneyo
fuente
La restricción de precedencia se estableció en "Éxito" deliberadamente. Además, cambiarlo a "Finalización" no responde a la pregunta que hice ni a la tarea con la que estaba luchando. Si "Probar conexión" falla, esto aún detiene la ejecución del paquete.
Michael J Swart
¡Tantas páginas leídas para finalmente encontrar esta respuesta! ¡Gracias!
alexkovelsky