【问题标题】:How to debug DTC issues?如何调试 DTC 问题?
【发布时间】:2010-10-01 19:06:42
【问题描述】:

我对某些代码进行了单元测试,偶尔会抛出“事务已被隐式或显式提交或中止”。例外。 Google 给了我很多精彩的文章,但我读过的似乎都没有。

如果我在本地运行单元测试,则永远不会抛出异常。
如果我在构建服务器上手动运行它,则永远不会抛出异常。

事实上,似乎唯一一次抛出异常是在晚上的自动构建和测试过程中,大约 80% 的时间都会抛出异常。

这几乎排除了有关该主题的所有 Google 结果,因为这些问题通常是由事务或防火墙中的数据库连接问题引起的。

在任何事件日志中(在运行测试的构建机器或开发数据库服务器上)都没有表明存在问题的事件。事实上,我看到的唯一相关事件消息是在数据库机器上——“MSDTC:会话空闲超时结束,正在拆除会话”。事件在我运行测试后不久发生。

我不确定如何继续尝试查找此问题。

是否有任何方法可以从代码中生成有关事务状态的详细信息(我正在使用带有 .NET 3.5 的 C#)?

有什么方法可以让事件日志为我提供更多信息来帮助追踪这一点?

如果这有助于找到正确的工具,则涉及的机器是 Windows 2000 Server (db) 和 Windows Serer 2003 (build)。

【问题讨论】:

  • 我会说,将跟踪添加到您的代码中。

标签: c# .net-3.5 transactions msdtc


【解决方案1】:

抛出错误的测试可能不是错误所在。

可能是在该测试之前运行的一个测试导致事务处于打开状态或其他问题。

然后,当运行测试时,它会在联系 MSDTC 时出错。

找到它的方法是从失败的测试开始,单独运行它,它应该通过。然后一次添加一个(或多个)其他测试,直到失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 2010-10-07
    相关资源
    最近更新 更多