![]() |
1
3
我怀疑这是发生的事情。只要基础技术支持分布式事务(如有必要),就可以嵌套TransactionScope。例如,如果启动一个事务并更新数据库A中的一些数据,然后调用一个函数,在该函数内,创建一个新的TransactionScope并将一些数据插入数据库B,则内部事务使用已经打开的“环境”事务。但是,要使其工作,需要运行分布式事务协调器(对于SQL服务器)。此外,SQL Server 2005及更高版本还能够以常规事务的形式启动事务,并在需要时将其升级为分布式事务,而SQL 2000将以分布式事务的形式启动所有事务,因为它不具备升级这些事务的能力。 当您有嵌套事务时,在提交最外部的事务之前,不会提交整个事务。 这里是 some more info . 看一下TransactionScopeOption;它确定嵌套事务如何与外部事务交互。 |
![]() |
2
2
当外部事务失败时,所有内部事务都将回滚。如果你承诺和内部的,并处置外部,内部仍然会回滚。事实上,内部不会提交,除非外部通过提交允许提交。 你是在承担外部任务,不是吗?见 here 关于这个的好论文。 |
![]() |
3
1
是的,可以有事务范围的层次结构。 This blog post 解释它们是如何工作的,特别是内部事务范围应该如何实例化,以及事务是如何完成和提交的。
重要的是要记住
交易
交易
作用域
-默认情况下(即
关于“已释放”错误消息,请参阅 this question . |
![]() |
Van Thoai Nguyen · MSSQL如何正确锁定行并插入? 8 年前 |
![]() |
bilpor · MSMQ忽略事务作用域 9 年前 |
![]() |
Aleksandar · 获取事务的开始和结束时间-SQL Server 10 年前 |