Inherited Transactions

A package can run another package by using the Execute Package task. The child package, which is the package run by the Execute Package task, may create its own package transaction, or it may inherit the parent package transaction.

A child package can inherit the transaction of the parent package if both of the following are true:

  • The child package is invoked by an Execute Package task in the parent package.

  • The Execute Package task that invoked the child package also joined the transaction of the parent package.

Containers and tasks in the child package cannot join the transaction that is inherited from the parent package unless the child package itself joins the transaction.

In the following diagram, there are three packages that all use transactions. Each package contains multiple tasks. To emphasize the behavior of the transactions, only the Execute Package tasks are shown. Package A runs packages B and C. In turn, package B runs packages D and E, and package C runs package F.

Packages and tasks have the following transaction attributes:

  • The TransactionOption property is set to Required on packages A and C

  • The TransactionOption property is set to Supported on packages B, D, and F, and on the tasks Execute Package B, Execute Package D, and Execute Package F.

  • The TransactionOption property is set to NotSupported on package E, and on the tasks Execute Package C and Execute Package E.

Flow of inherited transactions

Only child packages B, D, and F can inherit transactions from their parent packages because these packages have their TransactionOption properties set to Supported. Packages B and D inherit the transaction that was started by package A, while package F inherits the transaction that was started by package C.

Packages A and C control their own transactions because these packages have their TransactionOption properties set to Required. Furthermore, package C does not inherit the transaction started by package A because the TransactionOption property for the Execute Package C task is set to NotSupported.

Package E does not use transactions.

Integration Services icon (small) Stay Up to Date with Integration Services

For the latest downloads, articles, samples, and videos from Microsoft, as well as selected solutions from the community, visit the Integration Services page on MSDN or TechNet:

For automatic notification of these updates, subscribe to the RSS feeds available on the page.