这两天因为供应商在组件中HardCode了一个数据库连接逻辑,导致迁移服务器的时候,悄悄切换到了一台未配置MSDTC的服务器,导致系统集成部分报错,最终整个迁移以失败回滚告终。在事后分析处理过程中尝试了各种配置方案,特将这些记录下来以备后用。
========== 原创作品 作者:未闻 出处:博客园 ==========
一、常见报错
"该事务管理器已经禁止了它对远程/网络事务的支持。",“已禁用对分布式事务管理器(MSDTC)的网络访问。”,“与基础事务管理器的通信失败。”,“服务器XXX上的MSDTC不可用。”,“由于通信问题,MSDTC事务管理器无法将事务推送至目标事务管理器。”,“此事务已明地或暗地被确认或中止”
二、处理方式
使用MSDTC-Ping工具(提取码: e4qr)测试服务器间的连通性,所有服务器都要测试,全部连通后问题基本就解决了,对于连不通的服务器,采用下列方式排查(我们问题处理那么久就是漏测了一个测试服务器)
1. 检查防火墙,是否打开135端口(或者关闭防火墙)。
2. 检查C:WindowsSystem32driversetc下的hosts文件,是否添加了对应服务器映射
# 目标IP地址 目标机器名 10.101.0.78 ERP-DBCENTER
3. 下载并执行自动修复MSDTC服务脚本(提取码: g558)
4. Win+R,输入comexp.msc,打开组件服务
5. 试试各服务器是否成功ping通,不通的参照上述方式检查配置,基本都能相互连通了。
6. 如果ping通后仍然报错,那你要重启下服务器。
7. 基本没见过还不行的,如果你如此幸运,那再试试SQLServer服务器属性勾选需要分布式事务,只能帮你到这了。
三、参考资料
2. 基础事务管理器的通信失败