我有一个应用程序,它每天检索一次数据并将其存储到数据库中。直到最近,该应用程序一直与 SQL Server 驻留在同一台机器上,但由于某些必需外围设备的一些硬件问题,它已被移至运行 Windows XP 的单独机器上。
我们在这里遇到的问题是,当早上的第一个事务运行时,我们会收到以下堆栈跟踪:
System.Transactions.TransactionManagerCommunicationException:与底层事务管理器的通信失败。---> System.Runtime.InteropServices.COMException (0x80004005):对 COM 组件的调用已返回错误 HRESULT E_FAIL。
但是,立即再次重新运行事务是成功的。似乎 MSDTC 响应第一个事务的时间过长,因此失败,但随后准备好进行第二个事务。我在互联网上发现了几个关于这种情况的参考,但没有找到真正的解决方案。有没有人遇到过这个?如果是这样,有没有办法阻止 MSDTC 从内存中卸载,或者是否有其他解决方案,例如延长超时?