Utilizzo di checkpoint nei pacchetti
Data aggiornamento: 15 settembre 2007
In SQL Server 2005 Integration Services (SSIS) i pacchetti non eseguiti correttamente possono venire riavviati a partire dal punto in cui si è verificato l'errore anziché dall'inizio. Se un pacchetto è stato configurato per l'utilizzo di checkpoint, le informazioni sull'esecuzione del pacchetto vengono scritte in un file del checkpoint. Questo file viene quindi utilizzato per il riavvio di un pacchetto dal punto in cui si è verificato l'errore. Se il pacchetto viene eseguito correttamente, il file di checkpoint viene eliminato e creato nuovamente alla successiva esecuzione del pacchetto.
L'utilizzo di checkpoint in un pacchetto offre i vantaggi seguenti.
- Si evita di dover caricare e scaricare nuovamente file di grandi dimensioni. Ad esempio, un pacchetto che scarica più file di grandi dimensioni utilizzando un'attività FTP distinta per ogni download può essere riavviato se il download di un singolo file ha esito negativo. È quindi sufficiente scaricare nuovamente solo questo file.
- Si evita di dover caricare nuovamente grandi quantità di dati. Ad esempio, un pacchetto che esegue inserimenti di massa nelle tabelle delle dimensioni di un data warehouse utilizzando un'attività Inserimento di massa distinta per ogni dimensione può essere riavviato se l'inserimento ha esito negativo in una tabella della dimensioni. Verrà quindi caricata nuovamente solo tale dimensione.
- Si evita di dover ripetere l'aggregazione di valori. Ad esempio, un pacchetto che calcola molti aggregati, quali medie e somme, utilizzando un'attività Flusso di dati distinta per ogni aggregazione può essere riavviato se il calcolo di un'aggregazione ha esito negativo. Verrà quindi ricalcolata solo tale aggregazione.
Se un pacchetto è stato configurato per l'utilizzo di checkpoint, in Integration Services il punto di riavvio viene acquisito nel file del checkpoint. Il tipo di contenitore che ha esito negativo e l'implementazione di funzionalità quali le transazioni influiscono sul punto di riavvio registrato nel file del checkpoint. Nel file del checkpoint vengono inoltre acquisiti i valori correnti delle variabili. I valori delle variabili con tipo di dati Object non vengono tuttavia salvati nei file del checkpoint.
Definizione dei punti di riavvio
Il contenitore host delle attività, che incapsula una sola attività, corrisponde all'unità di lavoro atomica più piccola che può essere riavviata. Anche il contenitore Ciclo Foreach e un contenitore transazionale vengono considerati unità di lavoro atomiche.
Se un pacchetto viene interrotto durante l'esecuzione di un contenitore transazionale, la transazione viene interrotta e viene eseguito il rollback del lavoro eseguito dal contenitore. Al riavvio del pacchetto il contenitore che ha avuto esito negativo viene riavviato. Il completamento di eventuali contenitori figlio del contenitore transazionale non viene registrato nel file del checkpoint. Di conseguenza, al riavvio del pacchetto, il contenitore transazione e i contenitori figlio vengono rieseguiti.
[!NOTA] L'utilizzo di checkpoint e transazioni nello stesso pacchetto potrebbe provocare risultati imprevisti. Ad esempio, quando un pacchetto ha esito negativo e riparte da un checkpoint, il pacchetto potrebbe ripetere una transazione della quale è già stata eseguito il commit correttamente.
Al riavvio di un pacchetto i contenitori Ciclo Foreach e i contenitori figlio corrispondenti vengono rieseguiti. Un contenitore figlio del ciclo eseguito correttamente non viene registrato nel file del checkpoint, ma rieseguito.
Se il pacchetto viene riavviato, le configurazioni di pacchetto non vengono caricate nuovamente. Il pacchetto infatti utilizza le informazioni di configurazione scritte nel file del checkpoint. Ciò garantisce che per la riesecuzione di un pacchetto vengano utilizzate le configurazioni in uso quando il pacchetto ha avuto esito negativo.
Un pacchetto può essere riavviato solo a livello del flusso di controllo, mai all'interno di un flusso di dati. Per evitare la riesecuzione dell'intero flusso di dati, è possibile configurare il pacchetto in modo che includa più flussi di dati che utilizzano ognuno un'attività Flusso di dati distinta. Il tal modo il pacchetto può essere riavviato rieseguendo una sola attività Flusso di dati.
Configurazione di un pacchetto per il riavvio
Il file del checkpoint include i risultati dell'esecuzione di tutti i contenitori completati, i valori correnti delle variabili definite dall'utente e di sistema e le informazioni sulla configurazione di pacchetto. Include inoltre l'identificatore univoco del pacchetto. Un pacchetto viene riavviato correttamente se l'identificatore contenuto nel file del checkpoint corrisponde effettivamente al pacchetto. Ciò impedisce che un pacchetto utilizzi un file del checkpoint scritto da una versione diversa del pacchetto. Se il pacchetto viene riavviato correttamente, il file del checkpoint viene eliminato.
Nella tabella seguente sono elencate le proprietà di pacchetto disponibili per l'implementazione di checkpoint.
Proprietà | Descrizione |
---|---|
CheckpointFileName |
Specifica il nome del file del checkpoint. |
CheckpointUsage |
Specifica se vengono utilizzati o meno checkpoint. |
SaveCheckpoints |
Indica se il pacchetto salva i checkpoint. Questa proprietà deve essere impostata su True per consentire il riavvio di un pacchetto da un punto di errore. |
È inoltre necessario impostare la proprietà FailPackageOnFailure su true per tutti i contenitori del pacchetto che si desidera identificare come punti di riavvio.
La proprietà ForceExecutionResult consente di testare l'utilizzo di checkpoint in un pacchetto. Se si imposta la proprietà ForceExecutionResult di un'attività o di un contenitore su Failure, è possibile riprodurre l'errore in tempo reale. Quando si riesegue il pacchetto, l'attività e i contenitori che hanno avuto esito negativo vengono rieseguiti.
Utilizzo di checkpoint
I possibili valori della proprietà CheckpointUsage sono i seguenti:
Valore | Descrizione |
---|---|
Never |
Specifica che il file del checkpoint non viene utilizzato e che il pacchetto viene eseguito dall'inizio del flusso di lavoro. |
Always |
Specifica che il file del checkpoint viene sempre utilizzato e che il pacchetto viene riavviato a partire dal punto in cui si è verificato l'errore. Se il file del checkpoint non viene individuato, il pacchetto ha esito negativo. |
IfExists |
Specifica che il file del checkpoint viene utilizzato se disponibile. Se il file del checkpoint è disponibile, il pacchetto viene riavviato a partire dal punto in cui si è verificato l'errore. In caso contrario, viene eseguito dall'inizio del flusso di lavoro. |
[!NOTA] L'opzione /CheckPointing on di dtexec equivale a impostare la proprietà SaveCheckpoints del pacchetto su True e la proprietà CheckpointUsage su Always. Per ulteriori informazioni, vedere Utilità dtexec.
Protezione dei file del checkpoint
Poiché la protezione a livello di pacchetto non include la protezione dei file del checkpoint, è necessario proteggere tali file separatamente. I dati di checkpoint possono essere archiviati esclusivamente nel file system ed è necessario utilizzare un elenco di controllo di accesso (ACL) del sistema operativo per proteggere il percorso o la cartella in cui è archiviato il file. È importante proteggere i file del checkpoint perché contengono informazioni sullo stato di un pacchetto, inclusi i valori correnti delle variabili. Un variabile può ad esempio contenere un set di record con molte righe di informazioni private, quali numeri di telefono. Per ulteriori informazioni, vedere Protezione dei file utilizzati dai pacchetti.
Per configurare le proprietà di checkpoint
Vedere anche
Concetti
Panoramica di Integration Services
Altre risorse
Creazione di pacchetti in Progettazione SSIS
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
15 settembre 2007 |
|
17 luglio 2006 |
|
14 aprile 2006 |
|
5 dicembre 2005 |
|