Freigeben über


Mehrere Transaktionen

Es ist möglich, dass ein Paket nicht miteinander verbundene Transaktionen in einem Integration Services-Paket enthält.Immer wenn ein Container in der Mitte einer geschachtelten Hierarchie von Containern keine Transaktionen unterstützt, starten die Container, die sich in der Hierarchie oberhalb oder unterhalb des Containers befinden, separate Transaktionen, wenn sie für die Unterstützung von Transaktionen konfiguriert sind. Die Transaktionen führen einen Commit oder Rollback aus, und zwar nacheinander und beginnend beim innersten Task innerhalb der geschachtelten Containerhierarchie bis zum Paket. Nachdem die innere Transaktion einen Commit ausgeführt hat, erfolgt jedoch kein Rollback, wenn eine äußere Transaktion abgebrochen wird.

Ein Paket enthält z. B. einen Sequenzcontainer, der zwei Foreach-Schleifencontainer enthält, und jeder Container enthält zwei SQL Ausführen-Tasks. Der Sequenzcontainer unterstützt Transaktionen, die Foreach-Schleifencontainer unterstützen keine Transaktionen, und die SQL Ausführen-Tasks unterstützen Transaktionen. In diesem Beispiel würde jeder SQL Ausführen-Task eine eigene Transaktion starten und keinen Rollback ausführen, wenn die Transaktion für den Sequenz-Task abgebrochen wird.

Die TransactionOption-Eigenschaften des Sequenzcontainers, der Foreach-Schleifencontainer und die SQL Ausführen-Tasks sind folgendermaßen festgelegt:

  • Die TransactionOption-Eigenschaft des Sequenzcontainers ist auf Required festgelegt.

  • Die TransactionOption-Eigenschaften der Foreach-Schleifencontainer sind auf NotSupported festgelegt.

  • Die TransactionOption-Eigenschaften der SQL Ausführen-Tasks sind auf Required festgelegt.

Das folgende Diagramm zeigt die fünf nicht miteinander verbundenen Transaktionen im Paket. Eine Transaktion wird durch den Sequenzcontainer gestartet, und vier Transaktionen werden durch die SQL Ausführen-Tasks gestartet.

Implementierung von mehreren Transaktionen