Inherited Transactions

Data Transformation Services

Data Transformation Services

Inherited Transactions

The Execute Package task allows you to execute a Data Transformation Services (DTS) package as one step of a parent package. This subpackage may create its own package transactions, or it may inherit the parent package transaction.

A package inherits the parent package transaction if both of the following are true:

  • The package is invoked by an Execute Package task.

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

In the following diagram, there are six packages that all use transactions. Each package contains numerous tasks. Only the Execute Package tasks are shown. Package A executes packages B and C, which in turn execute packages D, E, and F. The Execute Package tasks that join the package transactions are indicated with an underline.

Packages A, B, and D execute in one package transaction. Packages C and F execute in a second transaction. Package E gets its own separate package transaction.

Packages A, C, and E control their own transactions. Packages B, D, and F inherit their transactions.

If a package runs with an inherited transaction, transaction behavior differs considerably:

  • No new package transaction is initiated. Steps join the inherited parent transaction.

  • No commit takes place. In particular:
    • If the Commit transaction on successful completion of this step check box is selected, it is ignored.

    • If the Commit on successful package completion check box is selected, it is ignored.
  • No rollback takes place on package completion, even if the package fails. However, individual steps may roll back the parent package transaction if you select the Rollback transaction on failure check box in the Workflow Properties dialog box.

    Note  If a subpackage fails, its parent Execute Package task fails. If a subpackage completes successfully, its parent Execute Package task completes successfully. If a subpackage experiences many errors or rolls back the package transaction, but its Fail package on first error property is cleared, it will complete successfully. Its parent Execute Package task also will complete successfully.

See Also

Execute Package Task

ExecutePackageTask Object