【发布时间】:2011-12-02 05:33:49
【问题描述】:
我有一个运行 MSDTC 的 Windows 2003 服务器。我已将其设置为无身份验证模式,并允许入站出站设置。我的 MSDTC 有效,但当天的第一笔交易失败。在立即进行另一笔交易时,它将开始工作。
错误是:事务已经隐式或显式提交或 中止(HRESULT 异常:0x8004D00E)。
所以我开始了 MSDTC 跟踪,在跟踪文件中显示:
pid=2144;tid=2528;time=12/02/2011-10:49:39.140;seq=531;eventid=TRACING_STARTED;;"MSDTC 正在恢复长期事务的跟踪"
pid=2144;tid=2528;time=12/02/2011-10:49:39.140;seq=532; eventid=TRANSACTION_BEGUN; tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441;"交易开始,描述:''"
pid=2144;tid=3288;time=12/02/2011-10:49:39.140;seq=533 ; eventid=RM_ENLISTED_IN_TRANSACTION; tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441 ;"资源管理器 #1002 作为事务登记 #1 登记。RM guid = '4e45a393-b02a-42bf-8f66-62bcb17fee8e'"
pid=2144;tid=4164;time=12/02/2011-0:49:58.390;seq=534; eventid=TRANSACTION_PROPOGATION_FAILED_CONNECTION_DOWN_FROM_REMOTE_TM ;tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441 ;"由于与远程事务管理器的连接中断,无法将事务传播到子节点 'DBSERVER'"
pid=2144;tid=4164;time=12/02/2011-10:49:58.390;seq=535; eventid=TRANSACTION_ABORTING;tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441;"事务正在中止"
pid=2144;tid=4164;time=12/02/2011-10:49:58.390;seq=536; eventid=RM_ISSUED_ABORT;tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441 ;"为事务登记 #1 向资源管理器 #1002 发出中止请求"
pid=2144;tid=2528;time=12/02/2011-10:49:58.422;seq=537; eventid=RM_ACKNOWLEDGED_ABORT;tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441;"收到来自资源管理器 #1002 的事务登记 #1 的中止请求的确认"
pid=2144;tid=2528;time=12/02/2011-10:49:58.422;seq=538; eventid=TRANSACTION_ABORTED;tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441 ;“交易已中止”
pid=2144;tid=3640;time=12/02/2011-10:50:29.437;seq=539;eventid=TRACING_STOPPED;;"由于缺乏活动,MSDTC 正在暂停对长期事务的跟踪"
我从这里应用了 Davy Brion 的 hack,http://davybrion.com/blog/2010/03/msdtc-woes-with-nservicebus-and-nhibernate/
还在事务选项中将超时间隔设置为 10 分钟。
如果服务器再次保持空闲一段时间,事务将失败。
提前谢谢..
【问题讨论】:
-
您看过这篇知识库文章:support.microsoft.com/kb/922430。这似乎与您的问题非常相似。看起来您有 2 个服务器:一个应用程序服务器和一个 DBServer?两台服务器上的 DTC 设置是否相同?服务器之间有防火墙吗?如果您确实有防火墙,它有时可以帮助跟踪防火墙中的活动。
-
谢谢 Tuzo,我的服务器在 LAN 中,它们没有防火墙,虽然一个在工作组中,另一个在域中。现在我已经将它们都转移到了域中。没见过这篇文章。根据文章,我已经更改了服务器上的注册表。如果它是固定的,我会发布状态。谢谢
-
谢谢图佐。这是同样的问题。你的 kb 文章帮助了我。我的问题已经解决了。