2

我有提供 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 字符串、事务范围)?

4

1 回答 1

2

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

另一种选择是运行 SQL Server Profiler 或服务器端跟踪来捕获连接、SQL 语句和事务。

于 2010-04-23T04:31:37.447 回答