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.