Condividi tramite


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

Questo articolo consente di risolvere il problema in 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

Prendi in considerazione lo scenario seguente:

  • Installare Microsoft SQL Server Integration Services in un computer.

  • Si crea un pacchetto SSIS che contiene un elemento contenitore Ciclo For seguito da un contenitore Sequence.

  • Sia il contenitore Ciclo For che gli elementi Sequence Container hanno uno dei seguenti elementi:

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

  • Si esegue il pacchetto SSIS

  • Il contenitore Ciclo For completa e l'esecuzione del pacchetto viene inserita nel contenitore Sequence.

  • Eseguire una delle azioni seguenti:

    • Per i pacchetti con una singola attività Esegui SQL, arrestare l'esecuzione del pacchetto mentre l'attività è ancora in esecuzione.
    • Per i pacchetti che eseguono più attività Esegui SQL, si arresta l'esecuzione del pacchetto oppure 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 da For Loop Contenitore invece del Sequence contenitore.

Note

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

Causa

Questo comportamento è predefinito. 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 Foreach Loop contenitore o all'interno di un Sequence contenitore.