I checkpoint SSIS non vengono rispettati per gli elementi del contenitore Ciclo For o Ciclo Foreach

Questo articolo consente di risolvere il problema per cui i checkpoint di SQL Server Integration Services (SSIS) non vengono rispettati per For Loop gli elementi del contenitore o Foreach Loop .

Versione originale del prodotto: SQL Server
Numero KB originale: 2624458

Sintomi

Considerare lo scenario descritto di seguito:

  • Installare Microsoft SQL Server Integration Services in un computer.

  • Si crea un pacchetto SSIS che contiene un elemento For Loop Container seguito da un sequence container.

  • Sia gli elementi Contenitore ciclo For che Contenitore sequenza hanno uno dei seguenti elementi:

    • Attività Esegui SQL (OR)
    • Due o più attività Esegui SQL eseguite in parallelo.
  • È possibile abilitare l'impostazione Checkpoint per il pacchetto SSIS.

  • Si esegue il pacchetto SSIS

  • Il contenitore ciclo For viene completato e l'esecuzione del pacchetto viene terminata nel contenitore di sequenze.

  • Eseguire una delle azioni seguenti:

    • Per i pacchetti con una singola attività Esegui SQL, si arresta l'esecuzione del pacchetto mentre l'attività è ancora in esecuzione.
    • Per i pacchetti che eseguono più attività Esegui SQL, è possibile arrestare l'esecuzione del pacchetto o si verifica un errore in una di queste attività mentre altre attività Esegui SQL sono ancora in esecuzione
  • Il pacchetto SSIS viene eseguito di nuovo.

In questo scenario Il pacchetto viene avviato dal For Loop contenitore anziché dal Sequence contenitore.

Nota

Questo problema non è associato all'attività Esegui SQL. Ciò può verificarsi anche con altre attività.

Causa

Si tratta di un comportamento legato alla progettazione del prodotto. I dati del checkpoint non vengono salvati per gli For Loop elementi contenitore e Foreach Loop contenitore. Se un contenitore figlio nel ciclo viene eseguito correttamente, non viene registrato nel file del checkpoint. Quindi, quando il pacchetto viene riavviato, le attività in ognuno di questi elementi del contenitore vengono eseguite di nuovo.

Soluzione alternativa

Per risolvere il problema, eseguire il wrapping del For Loop contenitore o Foreach Loop all'interno di un Sequence contenitore.