我们目前有 4 台负载平衡的 Web 服务器连接到 SQL 2005 数据库服务器。Web 服务器上是 IIS 6,它安装了我们的 Dot Net Web 服务,Dot Net COM+ 组件也安装在 Dot Net 4 中。每个 Web 服务器和 SQL 服务器上都使用 MSDTC 来处理必须作为一个单元运行的多个 SQL 查询的事务。有时,我们会在所有 4 台 Web 服务器中记录以下错误,但在 SQL 服务器上没有记录(在 Windows 事件查看器应用程序日志中):
System.Runtime.InteropServices.COMException (0x8004E002): 根事务想要提交,但事务中止(来自 HRESULT 的异常:0x8004E002)
发现了几篇文章,其中有人建议增加超时限制,但不幸的是,由于与客户请求沟通的时间限制,我们无法这样做。
我们只是想知道这个问题的根本原因是什么
答案1
听起来好像事务是在 Web 服务器上启动的,但是 MSDTC 无法在 SQL Server 上启动事务。
查看组件服务的 MSDTC 部分,您是否看到 Web 服务器上的错误数量与 SQL Server 上的错误数量相同?