追踪交易为什么会升级到DTC。

13

有没有办法精确定位为什么一个 System.Transaction TrasactionScope 会升级到 DTC?我们的一个组件似乎会升级事务,而所有其他(看起来非常相似的)组件都不会升级。

是否有任何信息可用于了解升级的原因,以及如何找到并观察这些信息?可以使用 SQL Profiler、日志文件吗?还是我在这个问题上没啥办法?

更新:我正在运行 SQL Server 2005 获取信息。


假设数据库是 SQL 2005 或 SQL 2008? - Kev
2个回答

9

当使用 TransactionScope 时,如果应用程序在所讨论的事务范围内打开第二个连接(即使是到同一个数据库),事务将被升级。


更多信息:https://dev59.com/tuo6XIcBkEYKwwoYTzEw - Matt Kocaj

7
你可以尝试关闭分布式事务协调器服务并将其启动类型设置为禁用。这将在事务被提升时引发异常,该异常将在调用堆栈中具有问题代码。
当然,如果您的机器上还有其他需要此服务的项目正在运行,则此方法无法帮助,但在调试机器上是可行的。

将此标记为已接受的答案,因为它实际上帮助我追踪了问题(这是由于打开了第二个连接,正如Anton在https://dev59.com/N3RB5IYBdhLWcg3wz6QJ#506753中提到的那样)。 - soren.enemaerke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接