2011-12-02 119 views
1

我有一台运行MSDTC的Windows 2003服务器。我已将其设置为“无身份验证模式”,并允许入站出站设置。我的MSDTC有效,但当天的第一笔交易失败。在即时另一笔交易中,它将开始工作。MSDTC间歇性失败

错误是:该事务已被隐式或显式提交或中止(从HRESULT异常:0x8004D00E)。

所以我开始MSDTC跟踪,在跟踪文件,它示出了这一点:

PID = 2144; TID = 2528;时间= 12/02/2011-10:49:39.140; SEQ = 531;事件ID = TRACING_STARTED ;;“MSDTC正在恢复长时间事务的跟踪”

pid = 2144; tid = 2528; time = 12/02/2011-10:49:39.140; seq = 532;事件ID = TRANSACTION_BEGUN; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441;“交易开始了,描述:''”

pid = 2144; tid = 3288; time = 12/02/2011-10:49:39.140; seq = 533;事件ID = RM_ENLISTED_IN_TRANSACTION; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; “资源管理器#1002征作为事务登记#1 RM GUID = '4e45a393-b02a-42bf-8f66-62bcb17fee8e'”

PID = 2144; TID = 4164 ;时间= 12/02/2011-0:49:58.390; SEQ = 534;事件ID = TRANSACTION_PROPOGATION_FAILED_CONNECTION_DOWN_FROM_REMOTE_TM; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; “没有传播完成交易的子节点 'DBSERVER',因为与远程交易管理器的连接去了”

PID = 2144; TID = 4164;时间= 12/02/2011-10:49:58.390; SEQ = 535; eventid = TRANSACTION_ABORTING; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441;“transaction is aborting”

pid = 2144; tid = 4164; time = 12/02/2011-10:49:58.390; seq = 536 ;事件ID = RM_ISSUED_ABORT; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; “中止请求发出到资源管理器#1002为事务登记#1”

PID = 2144; TID = 2528;时间= 12/02/2011 -10:49:58.422; SEQ = 537;事件ID = RM_ACKNOWLEDGED_ABORT; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441; “从资源管理器#1002中止请求用于事务登记#1的接收的确认”

PID = 2144; TID = 2528;时间= 12/02/2011-10:49:58.422; SEQ = 538; eventid = TRANSACTION_ABORTED; tx_guid = 4df1b0cf-26a0-43ba-8f41-965d80f92441;“transaction has been aborted”

pid = 2144; tid = 3640; time = 12/02/2011-10:50:29.437; seq = 539;事件ID = TRACING_STOPPED ;;“MSDTC被暂停的长跟踪 - 寿命交易由于缺乏活动的”

我已经从这里施加戴维布利昂的劈,http://davybrion.com/blog/2010/03/msdtc-woes-with-nservicebus-and-nhibernate/

另外设置超时间隔为10分钟在交易选项中。

如果服务器保持空闲一段时间,交易将失败。

在此先感谢..

+1

你看过这篇知识库文章:http://support.microsoft.com/kb/922430。看起来**非常类似于您的问题。看起来你有两台服务器:一台应用服务器和一台DBServer?两台服务器上的DTC设置是否相同?服务器之间是否有防火墙?如果您有防火墙,有时可以帮助跟踪防火墙中的活动。 –

+0

谢谢Tuzo,我的服务器在局域网中,他们没有防火墙,尽管一个在工作组中,另一个在域中。现在我已经将它们都转移到了域名中。从未见过这篇文章。根据文章,我已经更改了服务器上的注册表。如果它是固定的,我会发布状态。谢谢 – Bhoomi

+1

感谢Tuzo。这是同样的问题。你的文章帮助我。我的问题已修复。 – Bhoomi

回答

1

这里的知识库文章,帮助: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只是推荐值。可能需要对您的配置进行额外的测试。 单击确定。 重新启动MS DTC。 注意对于响应缓慢的情况,请确保在外围网络中包含防火墙时,Kerberos身份验证(UDP 88和TCP 88)所需的端口已打开。端口UDP 389和TCP 389(都用于LDAP以查找KDC)也必须打开。

+0

你能否更新知识库文章链接? – Lijo