Inserimento di transazioni nei pacchetti
Nei pacchetti vengono utilizzate transazioni per l'associazione di azioni del database eseguite dalle attività in unità atomiche in modo da mantenere l'integrità dei dati. Le operazioni di commit e rollback delle azioni di database incluse in una transazione vengono eseguite per tutte le azioni in modo da garantire lo stato consistente dei dati. Ad esempio, in un pacchetto con più attività Flusso di dati, ognuna delle quali aggiorna e inserisce dati in una tabella di database distinta, può essere utilizzata una transazione per garantire l'esecuzione del commit o del rollback di tutte le modifiche apportate ai flussi di dati. Nel caso di transazioni distribuite è possibile associare in una singola transazione operazioni disparate eseguite in più sistemi operativi.
È possibile inserire transazioni nei pacchetti per gli scopi seguenti:
Unire in una singola transazione i risultati di più attività in modo da garantire l'esecuzione di aggiornamenti consistenti. Ad esempio, le informazioni relative agli ordini e agli articoli di una linea di prodotti archiviati in due tabelle distinte possono essere caricate da due attività che hanno entrambe esito positivo o negativo.
Garantire aggiornamenti consistenti in più server di database. Ad esempio, l'indirizzo di un cliente può essere modificato in due sistemi di elaborazione delle transazioni in linea (OLTP) distinti nel contesto di una singola transazione.
Garantire l'esecuzione di aggiornamenti in un ambiente asincrono. Si supponga, ad esempio, che un pacchetto includa l'attività Message Queue per la lettura e l'eliminazione di un messaggio che contiene il nome di un file da caricare. In questo caso, se l'attività che carica il file ha esito negativo, un rollback successivo annulla le modifiche del database e reinserisce il messaggio in coda.
Eseguire più transazioni nell'ambito di un singolo pacchetto. Ad esempio, tramite l'attività Esegui pacchetto un pacchetto può eseguire simultaneamente una sequenza di transazioni su tre server distinti.
Tutti i tipi di contenitore di MicrosoftIntegration Services, ovvero pacchetti, contenitori Ciclo For, contenitori Ciclo Foreach e contenitori Sequenza, nonché gli host di attività che incapsulano ogni attività, possono essere configurati per l'utilizzo di transazioni. A tale scopo in Integration Services sono disponibili le tre opzioni NotSupported, Supported e Required.
L'opzione Required indica che il contenitore avvia una transazione, a meno che il contenitore padre non abbia già avviato un'altra transazione. In questo caso, il contenitore parteciperà alla transazione in corso. Si supponga, ad esempio, che un pacchetto includa un contenitore Sequenza con l'opzione Required. Se il pacchetto non è stato configurato per il supporto di transazioni, il contenitore avvierà la propria transazione. Se per il pacchetto è stata impostata l'opzione Required, il contenitore Sequenza parteciperà alla transazione del pacchetto.
L'opzione Supported indica che il contenitore non avvia una transazione, ma partecipa alla transazione avviata dal contenitore padre. Si supponga, ad esempio, che un pacchetto includa quattro attività Esegui SQL con l'opzione Supported e che il pacchetto avvii una transazione. In questo caso, se una delle attività Esegui SQL ha esito negativo viene eseguito il rollback degli aggiornamenti del database eseguiti dalle attività. Nel caso di un pacchetto che non avvia una transazione, le quattro attività Esegui SQL risultano non associate ad alcuna transazione. Di conseguenza viene eseguito il rollback solo degli aggiornamenti del database eseguiti dall'attività che ha esito negativo.
L'opzione NotSupported indica che il contenitore non avvia una transazione e non partecipa ad una transazione in corso. Una transazione avviata da un contenitore padre non ha alcun effetto sui contenitori figlio non configurati per il supporto di transazioni. Si supponga, ad esempio, che un pacchetto sia configurato per l'avvio di una transazione e che per un contenitore Ciclo For del pacchetto sia impostata l'opzione NotSupported. In questo caso, se le attività del Ciclo For hanno esito negativo non può venire eseguito il rollback di nessuna attività.
Per configurare le transazioni, è necessario impostare la proprietà TransactionOption del contenitore. È possibile eseguire questa operazione nella finestra Proprietà di Business Intelligence Development Studio o a livello di programmazione. Per ulteriori informazioni, vedere Guida per gli sviluppatori (Integration Services).
[!NOTA]
La proprietà TransactionOption può determinare se il valore della proprietà IsolationLevel richiesta da un contenitore viene applicato o meno. Per ulteriori informazioni, vedere la descrizione della proprietà IsolationLevel nell'argomento Impostazione delle proprietà di un pacchetto.
Per configurare un pacchetto per l'utilizzo di transazioni
Risorse esterne
- Intervento nel blog How to Use Transactions in SQL Server Integration Services SSIS sul sito Web all'indirizzo www.mssqltips.com
|
Vedere anche