TransactionScope是否需要DTC服务?

Sal*_*mer 10 sql-server asp.net msdtc transactions transactionscope

从我正在阅读的内容来看,为了在.NET中使用TransactionScope,您需要在Windows中运行分布式事务处理协调器服务.我关闭了该服务,我的应用程序似乎运行相同,回滚交易没问题.

我错过了什么吗?它是如何工作的?我正在运行Windows 7并在VisualStudio 2010上运行webapp.

小智 11

更现代版本的Windows在内核中有一个迷你DTC版本.它不是分布式的,而是使用相同的API - 但它只能处理每个事务范围的一个资源.

TransactionScope在开始时使用它,然后在添加第二个资源时将事务"提升"到真正的DTC(在您的情况下资源是数据库连接).因此,只要您的用例很简单,就可以避免DTC的DISTRIBUTED部分的(高)开销,并且可以在没有运行服务的情况下工作.

有关内核事务管理器的更多信息,请访问http://en.wikipedia.org/wiki/Kernel_Transaction_Manager

MS也加入了它,因为NTFS得到了交易,它需要确保DTC是可用的.

http://www.codeguru.com/cpp/article.php/c18309/


Ole*_*Dok 9

只有当您有多个具有不同连接的事务时,MSDTC才会进入游戏

那么答案是:

这取决于!

  • 如果每1个连接使用1个TranScope,则为NO
  • 如果每次连接使用1个TranScope,则为YES
  • 如果您创建了需要分布式事务的TransactionScope对象 - 则为YES