Partager via


Les points de contrôle SSIS ne sont pas respectés pour les éléments de conteneur de boucle For ou de boucle Foreach

Cet article vous aide à contourner le problème où les points de contrôle SQL Server Integration Services (SSIS) ne sont pas respectés pour For Loop les éléments de conteneur ou Foreach Loop .

Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 2624458

Symptômes

Prenons l’exemple du scénario suivant :

  • Vous installez Microsoft SQL Server Integration Services sur un ordinateur.

  • Vous créez un package SSIS qui contient un élément de conteneur de boucles For suivi d’un conteneur de séquence.

  • Les éléments Conteneur de boucles For et Conteneur de séquence ont l’une des options suivantes :

    • Tâche d’exécution SQL (OR)
    • Au moins deux tâches d’exécution SQL qui s’exécutent en parallèle.
  • Vous activez le paramètre Point de contrôle pour le package SSIS.

  • Vous exécutez le package SSIS

  • Le conteneur de boucles For se termine et l’exécution du package est effectuée dans le conteneur de séquence.

  • Vous effectuez l’une des actions ci-dessous :

    • Pour les packages ayant une seule tâche d’exécution SQL, vous arrêtez l’exécution du package pendant que la tâche est toujours en cours d’exécution.
    • Pour les packages exécutant plusieurs tâches d’exécution SQL, vous arrêtez l’exécution du package ou vous rencontrez un échec dans l’une de ces tâches alors que d’autres tâches d’exécution SQL sont toujours en cours d’exécution
  • Le package SSIS s’exécute à nouveau.

Dans ce scénario, le package démarre à partir du For Loop conteneur au lieu du Sequence conteneur.

Remarque

Ce problème n’est pas lié à l’exécution de la tâche SQL. Cela peut également se produire avec d’autres tâches.

Cause

Ce comportement est inhérent au produit. Les données de point de contrôle ne sont pas enregistrées pour les For Loop éléments conteneur et Foreach Loop conteneur. Si un conteneur enfant dans la boucle s’exécute correctement, il n’est pas enregistré dans le fichier de point de contrôle. Ainsi, lorsque le package est redémarré, les tâches de chacun de ces éléments de conteneur sont réexécutées.

Solution de contournement

Pour contourner le problème, encapsulez le For Loop conteneur ou à l’intérieur Foreach Loop d’un Sequence conteneur.