我在 2 台服务器上启用了 DTC - 一台 Web 服务器和一台数据库服务器。我们的 Web 应用程序中有几个地方需要使用 DTC(通过 TransactionScope)来管理涉及多个数据库的事务。在我们的 AD 服务器上,它运行良好,但出于某种原因,它在不是域成员的一对服务器上无法完全正常工作。我收到以下错误:
MSDTC on server 'DATABASE-SERVER' is unavailable.
从我的网络服务器使用 DTCPing,我得到了一次成功的测试,但是从我的数据库服务器却没有(它在 RPC 调用后停止并且没有消息)。
有关配置的一些注意事项:
- 两台服务器上的防火墙均已禁用
- 两者的 DTC 配置相同(本地 DTC 属性有网络 DTC 访问等,允许远程客户端/管理员,允许入站/出站通信,启用所有事务类型,并且“无需身份验证”
- 使用 DTCPing,我可以从 Web 服务器连接到数据库服务器,但反之则不行
- RCPPing 在两个方向上都运行良好
- DTC 在两者上运行
- 我已重新启动服务,并在两台服务器上多次执行卸载/安装
- nbtstat -c 正确显示远程服务器名称
我发现服务器之间的唯一区别是,当我从数据库服务器启动 DTCPing 时,它不会完成测试(它只是说“请从 WEB-SERVER 启动 PING 以完成测试”),而如果我从 Web 服务器启动,它会在两端完成整个过程。