我正在尝试将 SQL 事务与我的 SSIS 包一起使用,因此如果出现任何错误,更改将回滚。
为此,我在控制流中使用“序列容器”并将其“事务选项”设置为“必需”。
但是它无法执行包并给出 DTS 错误。(如果我从序列容器中删除数据流,一切正常)。
我已经按照此处所述对服务器进行了更改: http ://www.databasesupport.eu/categories/sql-server/1482-ssis-distributed-transactions
如果我遗漏了什么,你能告诉我吗?我是否需要在导入数据的服务器和导入数据的服务器上进行 DTS 设置。
请告诉我我缺少什么。我对 SSIS 很陌生。
是的。您需要将流程中涉及的所有服务器配置为 DTC。
当您使用本机 SSIS 事务功能时,如果连接管理器完全独立,则在幕后
BEGIN TRAN...COMMIT|ROLLBACK
发布标准。当涉及多个服务器时,这就是分布式事务协调器发挥作用的时候。即使您只是从源表中读取数据,SSIS 也会尝试在事务中登记该 SELECT 语句。我们在与 DB2 打交道时以艰难的方式了解到这一点,因为它们显然有能力启用/拒绝事务处理。我们在使用过时的 MySQL 实例时也遇到了问题,因为它不支持事务的概念。在那种情况下,我们有两个数据流。一个在没有事务的情况下运行并写入本地文件,然后使用事务控制的数据流将该文件读入我们的目标表。对于非常大的数据集来说不是一种可取的方法,但对于我们的问题集来说效果很好。