我有一台运行MSDTC的Windows2003服务器。我已将其设置为无身份验证模式,并带有允许入站-出站设置。我的MSDTC工作正常,但当天的第一笔交易失败。在另一个事务中,它将立即开始工作。
错误是:事务已隐式或显式提交或中止(来自HRESULT的异常: 0x8004D00E)。
因此,我启动了MSDTC跟踪,在跟踪文件中显示如下:
pid=2144;tid=2528;time=12/02/2011-10:49:39.140;seq=531;eventid=TRACING_STARTED;;"MSDTC正在恢复对长-lived事务的跟踪“
pid=2144;tid=2528;time=12/02/2011-10:49:39.140;seq=532;开始;tx_guid=4df1b0cf-26a0-43ba-8f41-965d80f92441;"transaction已开始,说明:''“
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;"transaction正在中止“
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;“已向资源管理器#1002发出事务登记#1的中止请求”
来自资源管理器#1002的事务登记#1的中止请求的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;"received确认“
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/
还可以在Transaction Options中将超时间隔设置为10分钟。
如果服务器再次保持空闲一段时间,事务将失败。
提前谢谢..
发布于 2013-06-28 21:20:35
下面是帮助我们的知识库文章:922430
如果MS DTC事务跟踪日志文件包含此数据,请执行以下步骤:
Click Start, click Run, type regedit, and then click OK.
Locate the following registry subkey:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC
Right-click MSDTC, point to New, and then click DWORD Value.
Type CmMaxNumberBindRetries, and then press ENTER.
Right-click CmMaxNumberBindRetries, and then click Modify.
Click Decimal.
In the Value data box, type 60. 此值增加了客户端计算机等待来自服务器计算机的绑定数据包响应的时间长度。如果客户端计算机未收到绑定数据包响应,则该值是客户端计算机停止事务之前秒数的两倍。例如,值60等于30秒。
注意:值60只是一个推荐值。可能需要对您的配置进行其他测试。单击OK。重新启动MS DTC。注意:对于慢响应方案,当外围网络中涉及防火墙时,请确保Kerberos身份验证所需的端口(UDP 88和TCP 88)处于打开状态。端口UDP 389和TCP 389 (都是LDAP查找KDC的端口)也必须打开。
https://stackoverflow.com/questions/8352167
复制相似问题