多个事务
一个 Integration Services 包可能会包括多个不相关的事务。这在以下情况下发生:一个包包含嵌套的容器层次结构,并且其中的一个容器不支持多个事务,而其余容器要求多个事务。要求多个事务的嵌套的容器将启动自己的单独事务。这些事务按照从嵌套容器层次结构中最里面的任务到包这个顺序来提交或回滚。但是,在内部容器的事务提交后,如果外部事务中止,则提交的这个事务不会回滚。
例如,某个包包含一个序列容器,该序列容器中又存储有两个 Foreach 循环容器,而这两个 Foreach 循环容器中又分别包含两个执行 SQL 任务。以下关系图说明这个示例包。
在这个示例包中,序列容器、Foreach 循环容器和执行 SQL 任务的 TransactionOption 属性按照如下方式进行设置:
序列容器的 TransactionOption 属性设置为 Required。
Foreach 循环容器的 TransactionOption 属性设置为 NotSupported。
执行 SQL 任务的 TransactionOption 属性设置为 Required。
对于针对 TransactionOption 属性的这些设置,在示例包中将存在五个不相关的事务。序列容器启动一个事务,并且四个执行 SQL 任务分别启动它们自己的事务。此外,如果序列任务上的事务被中止,则执行 SQL 任务启动的事务将不会回滚。
|