2010-04-22 54 views
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字符串,事務範圍)?

回答

2

你可以看看Data Access Tracing in SQL Server 2005(還有一個指向SQL Server 2008版本的鏈接)。該文章介紹瞭如何配置跟蹤以及如何讀取生成的文件。我不確定它是否會完全給你想要的東西,但它肯定會顯示連接/連接字符串。不利的一面是,產生了很多輸出。

另一種選擇是運行SQL Server事件探查或server-side trace捕捉連接,SQL語句和交易。

+0

謝謝,@Tuzo。我會在週末檢查一下。 – 2010-04-23 16:19:44

相關問題