如何解决是否可以使用2个Execute SQL任务在带有事务的SSIS中包装容器?
我想将序列容器包装在事务中,以便用户可以选择是否插入其数据。
但是,
BEGIN TRANSACTION T1;
“开始交易”中的
IF ? = 0
COMMIT TRANSACTION T1
ELSE
ROLLBACK TRANSACTION T1;
在“回滚或提交事务”中,抛出一个错误,指出最后一个任务也没有绑定的begin语句。
是否还有另一种方法可以在容器上完成交易,或者是否需要更改某些包装属性才能使其正常工作?
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;
整个容器包装在一个事务中,并且回滚/提交没有错误
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。