我有一个应用程序,每天检索一次数据并将其存储到数据库中。直到最近,该应用程序已与SQL Server驻留在同一台计算机上,但是由于某些必需外围设备的某些硬件问题,该应用程序已移至运行Windows XP的单独计算机上。

我们这里遇到的问题是,当早晨的第一笔交易运行时,我们收到以下内容的堆栈跟踪:


  System.Transactions.TransactionManagerCommunicationException:与基础事务管理器的通信失败。 ---> System.Runtime.InteropServices.COMException(0x80004005):错误HRESULT E_FAIL已从对COM组件的调用返回。


但是,立即再次重新运行该事务成功。看起来MSDTC花费的时间太长,无法响应第一个事务,因此,虽然失败了,但是为第二个事务做好了准备。我在互联网上发现了对此的一些引用,但没有找到真正的解决方案。有人遇到过这个吗?如果是这样,是否有办法防止MSDTC从内存中卸载,或者是否有其他解决方案,例如延长超时时间?

最佳答案

多谢你们,

只是为了满足您的需要,我们已通过更改dcom配置以使用位于SQL Server上的远程协调器解决了该问题,到目前为止,我们还没有遇到任何其他问题。

10-07 20:20