2009-02-03 52 views
12

有什麼方法可以準確確定爲什麼System.Transaction TrasactionScope要升級到DTC?我們遇到了一個似乎會使交易升級的組件之一,而所有其他組件(似乎看起來很相似)並沒有升級。跟蹤交易升級到DTC的原因

是否有任何有關升級原因的信息,以及它們如何被發現和觀察? SQL事件探查器?日誌文件?或者我對這一個運氣不好?

UPDATE:我對運行SQL Server 2005中的信息

+0

假定數據庫是SQL 2005或SQL 2008? – Kev 2009-02-03 11:44:08

回答

7

您可以嘗試關閉Distributed Transaction Cordinator服務並將其啓動類型設置爲禁用。當事務被提升並且在調用堆棧中存在問題代碼時,這將導致異常。

當然,如果在機器上運行需要此服務的其他項目,但在調試機器上可能會這樣做,這將無濟於事。

+0

標記此接受的答案,因爲它實際上幫助我追蹤問題(這是由於通過打開第二個連接,就像安東在http://stackoverflow.com/questions/506733/trace-why-a-transaction-is-escalated-to-dtc/506753#506753中提到的那樣) – 2009-02-06 13:23:39

9

當使用TransactionScope每當應用程序打開有問題的事務範圍內的第二連接(甚至到同一個數據庫),一個事務將升級。

+0

更多信息:http://stackoverflow.com/questions/1690892/transactionscope-automatically-escalating-to-msdtc-on-some-machines – 2011-10-25 03:30:01