微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否可以使用2个Execute SQL任务在带有事务的SSIS中包装容器?

如何解决是否可以使用2个Execute SQL任务在带有事务的SSIS中包装容器?

我想将序列容器包装在事务中,以便用户可以选择是否插入其数据。
但是,

BEGIN TRANSACTION T1;

“开始交易”中的

IF ? = 0
   COMMIT TRANSACTION T1
ELSE
   ROLLBACK TRANSACTION T1;

在“回滚或提交事务”中,抛出一个错误,指出最后一个任务也没有绑定的begin语句。

Control Flow of how I want the transaction to work

是否还有另一种方法可以在容器上完成交易,或者是否需要更改某些包装属性才能使其正常工作?

P.S。该软件包将以C#格式运行,因此,如果有一种方法可以将其包装在C#的事务中,那么该选项也可用

感谢您的帮助或建议

解决方法

这是SSIS中的一个内置选项。您选择序列并转到属性。在TransactionOption下,将值设置为“ required”。
不过,这要求MSDTC正在运行。

,

通过将所有任务设置为“在TransactionOption上支持”,并添加检查以查看是否有活动的事务,像这样

DECLARE @TranCount int;

SET @TranCount = (select COUNT(*) from sys.sysprocesses WHERE open_tran > 0);

IF @TranCount > 0
ROLLBACK TRANSACTION;

整个容器包装在一个事务中,并且回滚/提交没有错误

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。