MSDTC报错问题处理总结(场景分析、自动修复脚本及检测工具)

这两天因为供应商在组件中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服务器属性勾选需要分布式事务,只能帮你到这了。

三、参考资料

1. 金蝶云-MSDTC问题处理

2. 基础事务管理器的通信失败

3. 一次分布式事务管理器(MSDTC)的事务处理异常的排错

原文地址:https://www.cnblogs.com/yokeqi/p/12667490.html