C#中的TransactionScope可以触发SQL Server中存储过程的回滚吗?
作者:互联网
我有一个问题 – 是否可以使用using(块和TransactionScope,在sql server上执行多个非查询,并在一个失败时回滚所有存储过程)在C#端创建逻辑?
约束:我无法创建更大的存储过程来执行TSQL事务中的其他存储过程.
– 存储过程中没有’commit’,只返回0;在末尾.
这是否意味着如果事务失败/超时/我没有点击transaction.Complete(),它们能够自动回滚?我是否需要将ROLLBACK插入到此功能的存储过程中?
我努力寻找,但我无法找到这个有点独特的问题的确切答案.感谢您的时间.如果有人有任何可能的测试让我执行尝试,我会更愿意.
解决方法:
是的,TransactionScope被ADO.NET选中.如果你捕获任何异常并调用.Rollback(),一切都将被回滚.
它的工作方式有很好的细节(例如MSDTC可以参与其中),但你所建议的是完全有效的,并且是你想要实现的正确方法.
同样适用于Oracle和支持TransactionScope的其他DB.您还可以通过WCF服务传递事务,如果使用更多数据库,则它们将成为事务的一部分,依此类推.
通过一些低级工作,您甚至可以在事务中包含NTFS操作.对于NTFS,Windows API支持它,但不支持没有包装器的.NET.
标签:c,stored-procedures,transactionscope,rollback 来源: https://codeday.me/bug/20190529/1177797.html