【问题标题】:How Can I Find What's Causing My Transaction to Get Promoted?我怎样才能找到导致我的交易得到提升的原因?
【发布时间】:2010-04-22 11:26:21
【问题描述】:

我有一个提供 Web 服务(.asmx 和 WCF 的混合物)的网站,该网站主要使用 LINQ to SQL 和 System.Transactions。有时我们会看到事务被提升为分布式事务,这会导致问题,因为我们的 Web 服务器与我们的数据库隔离,因此我们无法使用 MSDTC。

我已通过将以下内容添加到我的 web.config 来为 System.Transactions 配置跟踪:

<system.diagnostics>
  <sources>
    <source name="System.Transactions" switchValue="Information">
      <listeners>
        <add
          name="tx"
          type="System.Diagnostics.XmlWriterTraceListener"
          initializeData="tx.log"
          />
      </listeners>
    </source>
  </sources>
</system.diagnostics>

这很有趣,它会在交易被提升时显示给我,但我发现它并不能真正帮助找出原因。

ADO.NET 是否有等效的跟踪机制,可以在创建连接时向我显示,包括影响池的变量(用户、cnn 字符串、事务范围)?

【问题讨论】:

    标签: asp.net ado.net transactions msdtc system.diagnostics


    【解决方案1】:

    您可以查看Data Access Tracing in SQL Server 2005(那里还有指向 SQL Server 2008 版本的链接)。那篇文章描述了如何配置跟踪以及如何读取生成的文件。我不确定它是否会给你你想要的东西,但它肯定会显示连接/连接字符串。不利的一面是,会产生大量输出。

    另一种选择是运行 SQL Server Profiler 或 server-side trace 来捕获连接、SQL 语句和事务。

    【讨论】:

    • 谢谢@Tuzo。我周末去看看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2023-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多