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