.net - 使用 TransactionScope 和 MS DTC 时的常见问题

标签 .net transactionscope msdtc

我刚刚开始使用 TransactionScope,我发现总会遇到一些意想不到的事情,需要永远调试。

我认为拥有这些的综合列表对于那些“奇怪的错误”情况非常有用,并且可以扩展我们对平台中奇怪现象的了解。

关于我将如何使用事务范围的一些上下文:

  • 网络应用程序
  • 多个 Web 服务器、应用程序服务器和 sql 服务器
  • 事务将主要是数据库事务,但有些会被提升为写入 MSMQ。
  • 最佳答案

    我头顶上有两件事:

  • 当您在同一范围内使用多个连接对象时,事务将被提升,即使这些连接具有相同的连接字符串(这在 sql 2008 中已修复)。阅读更多 this threaddbconnectionscope将在 sql 2005
  • 上解决该问题
  • msdtc 实例需要能够看到彼此,并且需要正确设置它们的安全性
    http://support.microsoft.com/kb/899191 (允许入站和出站,不需要相互认证通常是最安全的选择)。使用 DTCPing 解决 dtc 实例之间的连接问题,如下所述:http://support.microsoft.com/kb/306843

  • 您希望事务尽可能轻量级,dtc 引入了大量开销。您还希望事务尽可能短,因此只在应用程序服务器上而不是在 Web 服务器上引入它们。使应用服务器和数据库之间的网络跳跃尽可能小和尽可能快,通过不同于应用服务器和数据库之间的连接在 Web 和应用服务器之间发送网络流量,并使最后一个快速尖叫,可笑的短连接。

    如果您有多个应用程序服务器,您可以考虑在服务器上运行一个 msdtc 实例(例如,在数据库或其中一个应用程序服务器上)并从所有应用程序服务器远程使用它,而不是每个应用程序服务器都运行自己的,但是我不知道这有什么额外的好处。

    关于.net - 使用 TransactionScope 和 MS DTC 时的常见问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759163/

    相关文章:

    Nhibernate出现TransactionScope错误-DTC事务预准备阶段失败-升级到Nhibernate 3.0

    c# - TransactionScope 提前完成

    c# - 为什么 MSDTC 在使用 mstest 进行单元测试时表现不一致?

    sql-server - MSDTC 的问题 - 远程事务

    c# - 不同日期列表

    c# - LC.exe 无法运行

    .net - 如何使用 .net StreamReader 打开已打开的文件?

    c# - 使用Transaction Scop时重置隔离级别

    c# - 来自 Machine.Config 的 maxTimeout 值未被 C# winform 应用程序获取

    c# - 有没有一种方法可以使用 Expression Blend 在设计时查看屏幕在另一种语言中的外观?