以下是SSIS包中控制流程执行的任务列表
我的疑问是,如果步骤4中出现错误,SSIS会自动回滚到步骤1之前的状态吗?
任何人都可以帮助我朝正确的方向发展吗?任何帮助表示赞赏。
谢谢!
答案 0 :(得分:3)
一般来说,每项任务都是原子的。任务4将会或不会完成,不会发生半场措施。如果您需要整个软件包成功/失败,那么您需要对其进行配置。
最简单的选择是对包使用内置事务选项。这使用Microsoft分布式事务处理协调器(MSDTC)来处理各种服务器之间的事务。在您的包中,右键单击您的控制流的背景,并将TransactionOption从Supported
更改为Required
更多详细信息,了解所有相关信息的工作原理。
How do I run multiple data flow tasks in parallel within the same transaction?
如果MSDTC由于某种原因无法为您工作,那么您需要将连接管理器设置为RetainSameConnection并在您的包中添加begin tran / commit / rollback逻辑请参阅SSIS: Default Logging OnError don't work with RetainSameConnection以获取示例但如果所有任务都在同一个数据库中执行,那么仅才能工作。
如果MSDTC不起作用并且您将修改多个数据库中的数据,那么您将需要编写自己的“回滚”脚本并在OnError / OnTaskFailed事件或您的错误分支中触发它们。控制流。当您发布更新和删除时,需要在您能够撤消这些操作之前实施更改数据捕获机制。