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.