Transazioni multiple
Un pacchetto di Integration Services può includere transazioni multiple non correlate. Questa situazione si verifica quando un pacchetto contiene una gerarchia di contenitori nidificati dove uno di quei contenitori non supporta transazioni mentre per gli altri sono necessarie. I contenitori nidificati che richiedono transazioni avvieranno transazioni separate autonomamente. Viene quindi eseguito il commit o il rollback delle transazioni a partire dall'attività più interna della gerarchia di contenitori nidificati fino al livello del pacchetto. Dopo il commit della transazione di un contenitore interno, tuttavia, il rollback viene eseguito solo in caso di interruzione di una transazione più esterna.
Si supponga, ad esempio, che un pacchetto includa un contenitore Sequenza con due contenitori Ciclo Foreach ognuno dei quali include due attività Esegui SQL. Nel diagramma seguente viene illustrato questo pacchetto di esempio.
Nel pacchetto di esempio, le proprietà TransactionOption del contenitore Sequenza, dei contenitori Ciclo Foreach e delle attività Esegui SQL sono impostate nel seguente modo:
La proprietà TransactionOption del contenitore Sequenza è impostata su Required.
Le proprietà TransactionOption dei contenitori Ciclo Foreach sono impostate su NotSupported.
Le proprietà TransactionOption delle attività Esegui SQL sono impostate su Required.
Con queste impostazioni per le proprietà TransactionOption, vi saranno cinque transazioni non correlate nel pacchetto di esempio. Una transazione viene avviata nel contenitore Sequenza e le altre quattro vengono avviate dalle singole attività Esegui SQL. Inoltre, le transazioni avviate dalle attività Esegui SQL non eseguono il rollback se la transazione dell'attività Sequenza viene interrotta.
|
Vedere anche