2009-02-03 55 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