> Quindi, dato un Sequnece Container con tre step Task A -> Task B -> Task
> C,
> sul fallimento di uno dei tre task devo riiniziare sempre dal Task A,
> qualcuno sa dirmi se è possibile?
Fammi capire meglio.. Tu hai tre task in serie. Adesso, ovunque si sollevi
l'eccezione, l'esecuzione riparte dal primo task?
Quello che ti serve invece è che il processo ti riparta dal task andato in
errore (compreso)?
In ogni modo, come hai settato le seguenti proprietà?
CheckpointFileName, CheckpointUsage, SaveCheckpoints
Come hai valorizzato le proprietà FailPackageOnFailure di ogni macroblocco e
del package?
--
Alessandro Alpi
MVP SQL Server - http://mvp.support.microsoft.com
dotNetHell.it - http://www.dotnethell.it
blog - http://blogs.dotnethell.it/suxstellino
Ho provato di tutto, ma non ne esco,
> l'unica alternativa che ho è farmi un controllino personale, ma vorrei
> evitarlo.
> Grazie
> Ciao Emiliano
> Fammi capire meglio.. Tu hai tre task in serie. Adesso, ovunque si sollevi
> l'eccezione, l'esecuzione riparte dal primo task?
magari, è quello che mi serve.
Magari, purtroppo riparte sempre dal punto in cui è andato in errore (penso
sia lo standard per i checkpoint), invece io lo voglio far pratire dal primo
step del container che ha avuto l'errore.
> In ogni modo, come hai settato le seguenti proprietà?
> CheckpointFileName, CheckpointUsage, SaveCheckpoints
CheckpointFileName = percorso\prova.xml
CheckpointUsage = always
SaveCheckpoints = true
> Come hai valorizzato le proprietà FailPackageOnFailure di ogni macroblocco e
> del package?
FailPackageOnFailure = true
ho messo questa opzione sia nel Container sia nei singoli step interni al
container provando tutte le combizioni possibili.
In più ho anche provato a settare FailParentOnFailure = true negli step
interni al container.
Fai così:
- Metti a TUTTI i task interni ai sequence container la proprietà
FailPackageOnFailure a false
- Aggiungi in ogni sequence container un Foreach Loop container
- Imposta il Foreach Loop container con l'enumeratore "Item"
- Aggiungi sotto una colonna di tipo intero ad esempio e metti il valore 1
(un item con un qualunque valore a dire il vero, così fai solo un ciclo)
- Imposta la proprietà FailPackageOnFailure del Foreach Loop a true
- Sposta tutti i task che erano nel sequence container all'interno del
Foreach Loop container
- Imposta la proprietà FailParentOnFailure di ogni task (di primo livello)
interno al Loop a true
- Imposta la proprietà CheckpointUsage del package a IfExists e la
FailPackageOnFailure del package a false (le altre sono ok)
Il foreach loop è importante perchè nel checkpoint non viene segnato e
quindi il SSIS riparte sempre dall'ultimo foreach andato male..
cancella il file, riprova e fammi sapere ;-)