我怎样才能找到导致我的交易被推广的原因?

时间:2010-04-22 11:26:21

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

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

我已经为System.Transactions配置了跟踪,方法是将以下内容添加到我的web.config:

<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字符串,事务范围)?

1 个答案:

答案 0 :(得分:2)

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

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