SQL SERVER 无法执行该操作,因为链接服务器 "IP地址" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。

链接服务器"IP地址"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "没有活动事务。"。

背景
前几天,有个需求,需要写一个触发器,但是触发器里用到了 链接服务器,需要修改另一个服务器里数据库的一条数据

查询方法
度娘一下可以知道 通过配置MSDTC的方式可以解决,然后兴冲冲的去配置了两台服务器的DTC,想着终于搞定了,执行语句之后,还是报这个错误,开始口吐芬芳~,然后继续度娘...

解决方法
通过查询主服务器的windows日志,发现两台服务器的MS DTC具有相同的唯一标识,导致不能通信;
具体日志内容
本地 MS DTC 检测到 MES-2018 上的 MS DTC 与本地 MS DTC 具有相同的唯一标识。这意味着两个 MS DTC 不能彼此互相通信。如果使用不支持的克隆工具克隆了其中某个系统,通常会发生此问题。MS DTC 要求使用被支持的克隆工具(例如 SYSPREP)克隆系统。从命令行提示符窗口运行“msdtc -uninstall”,然后运行“msdtc -install”将解决此问题。注意: 运行“msdtc -uninstall”将导致系统丢失所有 MS DTC 配置信息。
然后需要给两台服务器的其中一台按照日志提示内容卸载并且重新安装MS DTC就可以了(可能需要重启,反正我是重启了
windows日志打开方法

  1. 控制面板→系统安全


    image.png
  2. windows日志→应用程序


    image.png

结果
按照此方法成功执行触发器
完美解决~

你可能感兴趣的:(SQL SERVER 无法执行该操作,因为链接服务器 "IP地址" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。)