TransactionScope是否需要DTC服务?

时间:2012-01-31 05:58:22

标签: asp.net sql-server transactions transactionscope msdtc

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

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

2 个答案:

答案 0 :(得分:11)

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

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

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

MS补充说,因为NTFS得到了交易,它需要确保DTC是可用的。

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

答案 1 :(得分:9)

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

所以答案是:

这取决于!

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