我的网站提供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字符串,事务范围)?
答案 0 :(得分:2)
您可以查看Data Access Tracing in SQL Server 2005(还有一个指向SQL Server 2008版本的链接)。该文章介绍了如何配置跟踪以及如何读取生成的文件。我不确定它是否会给你你想要的东西,但它肯定会显示连接/连接字符串。在缺点方面,产生了大量的输出。
另一种选择是运行SQL Server Profiler或server-side trace来捕获连接,SQL语句和事务。