多个事务

包可以在一个 Integration Services 包中包括多个不相关的事务。无论任何时候,位于嵌套容器层次结构中间的容器都不支持事务,位于层次结构中其他位置的容器如果配置为支持事务,则它们将启动单独的事务。 事务按照从嵌套容器层次结构中最里面的任务到包这个顺序来提交或回滚。 但是,在内部事务提交后,如果外部事务中止,已提交的事务不会回滚。

例如,某个包包含一个序列容器,该序列容器中又存储有两个 Foreach 循环容器,而后面这两个容器中又分别包含两个执行 SQL 任务。 该序列容器支持事务,Foreach 循环容器不支持事务,执行 SQL 任务也支持事务。在此示例中,每个执行 SQL 任务将启动其自己的事务,而且在该序列任务上的事务中止时不回滚。

序列容器、Foreach 循环容器和执行 SQL 任务的 TransactionOption 属性按照如下方式进行设置:

  • 序列容器的 TransactionOption 属性设置为 Required

  • Foreach 循环容器的 TransactionOption 属性设置为 NotSupported

  • 执行 SQL 任务的 TransactionOption 属性设置为 Required

下面的关系图显示了包中的五个不相关的事务。 一个事务是由序列容器启动的,其余四个事务是由执行 SQL 任务启动的。

多个事务的实现