问题背景:
有两台服务器A,B,分别装上SQL SERVER 2014数据库,现在需要当A服务器上数据库a表有一条数据插入后,通过表中触发器,将数据经处理后同步到B服务器数据库b表中。
报如下错误:
链接服务器"****"的 OLE DB 访问接口 “SQLNCLI10” 返回了消息 “没有活动事务。”。
无法执行该操作,因为链接服务器 “*****r” 的 OLE DB 访问接口 “SQLNCLI10” 无法启动分布式事务。

服务器 *********上的 MSDTC 不可用。
实施过程如下:
前期百度了很久,按照网上说的步骤确实一步步尝试,但是却还是没有解决,然后发现了原因是因为服务器上防火墙开启的问题。那么接下来就从两个方面说下如何解决这个问题,
第一种两台服务器均关闭防火墙,第二种两台服务器开启防火墙。
第一种:两台服务器关闭防火墙,具体进行如下操作:
(注:两台服务器均做相同配置)
1、双方开启MSDTC服务
(1)net stop msdtc
(2)net start msdtc
如果无法启动再运行如下命令:
(1)msdtc -resetlog
(2)net start msdtc
2、MSDTC设置
(1)在windows控制面版–>管理工具–>组件服务–>Distributed Transaction Coordinator–>本地DTC–>属性–>确定(启动)
(2)在客户端管理中选中“允许远程客户端”“允许远程管理”
(3)在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
(4)保证DTC登陆账户为:NT Authority\NetworkService
在这里插入图片描述
在这里插入图片描述
3、创建数据库链接
创建数据库链接有两种方法可自行百度,此处不做详细介绍

总结:通过以上步骤,基本上在关闭防火墙的情况下是可以实现的。

第二种:两台服务器开启防火墙,具体进行如下操作:
(注:两台服务器均做相同配置,我当时就卡这了 TAT,下面我把能加的都配置上了,可能有些会多余,因为具体细节有些也不太明白,但是最后结果是好的)
1、前三个基本步骤同上
2、打开双方135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。使用“telnet IP 135 ”命令测试对方端口是否对外开放。如果出现白色光标闪烁证明未阻断,如果报错则需要开启。(一般默认都是开启的)
3、指定端口范围(为了防止耗尽DCOM端口,导致报错“终结点映射器中没有其他终结点”)
在windows控制面版–>管理工具–>组件服务–>计算机–>我的电脑
找到后右击属性,出现如下图所示:
在这里插入图片描述
选中默认协议后,单击属性后如下所示
在这里插入图片描述
然后进行分配(例如5000-51000,视具体情况而定,一般范围小于30会报错,所以我干脆一次性先整大点)
在这里插入图片描述
4、打开防火墙,高级设置
添加入站和出站规则,一些关键信息两边尽量同步,比如数据库端口号,刚定义的DCOM端口范围(5000-51000)等。其他的一些入站出站规则需要的话直接开启即可。
在这里插入图片描述
5、远程服务器上名称解析
分布式事务的参与服务器是需要相互访问的,发起查询的服务器要根据机器名或ip查找远程服务器的,同样远程服务器也要查找发起服务器,远程服务器通过发起服务器的机器名查找服务器,所以要保证远程服务器能够通过发起服务器的机器名访问到发起服务器。
一般的,两个服务器在同一网段机器名能就行很好的解析,但是也不保证都能很好的解析,所以比较保险的做法是:
在远程服务器的在“C:\WINDOWS\system32\drivers\etc\hosts”文件中增加一条记录:
xxx.xxx.xxx.xxx 服务器名

总结:开启防火墙后需要配置的比较多,总之最后模拟插入一条数据后,成功了。

可同步用DTCPing工作进行故障排除
DTCPING.exe下载
http://download.microsoft.com/download/d/0/0/d00c8f6b-135d-4441-a97b-9de16a1935c1/dtcping.exe
参考内容
https://docs.microsoft.com/zh-cn/archive/blogs/puneetgupta/troubleshooting-msdtc-issues-with-the-dtcping-tool

问题背景:有两台服务器A,B,分别装上SQL SERVER 2014数据库,现在需要当A服务器上数据库a表有一条数据插入后,通过表中触发器,将数据经处理后同步到B服务器数据库b表中。报如下错误:链接服务器""的 OLE DB 访问接口 “SQLNCLI10” 返回了消息 “没有活动事务。”。无法执行该操作,因为链接服务器 "r" 的 OLE DB 访问接口 “SQLNCLI10” 无法启动分布式事务。或服务器 '’ 上的 MSDTC 不可用。实施过程如下:前期百度了很久,按照网上说的步骤确实
安装 sql server 2005时,出现这个错误:“ 无法 找到产品microsoft SQL Server Native Cli ent的安装程序包,尝试再次使用的安装包 ' Sql n cli .msi ' 有效副本安装。” sql n cli _x64.msi驱动是通过安装 sql n cli .msi 来解决电脑没有安装 SQL 的问题。
链接 服务器 属性设置,确保红框位置是true: 运行->输入services.msc,打开服务,保证Distributed Transaction Coordinator服务开启 如果上述4点均...
简介: 链接 服务器 ***的 OLE DB 访问 接口 " SQL N CLI 10 "返回了消息“没有活动事务。”。 无法 执行该操作,因为 链接 服务器 ***的 OLE DB 访问 接口 " SQL N CLI 10 " 无法 启动 分布式事务 。 错误信息如下: 链接 服务器 ***的 OLE DB 访问 接口 " SQL N CLI 10 "返回了消息“没有活动事务。”。 无法 执行该操作,因为 链接 服务器 ***的 OLE DB 访问 接口 " SQL N CLI 10 " 无法 启...
一、 问题现象 在执行 SQL Server 分布式事务 时,在 SQL Server 2005下收到如下错误: 消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行 无法 执行该操作,因为 链接 服务器 “xxxxx” 的 OLE DB 访问 接口 SQL N CLI 无法 启动 分布式事务 。 在 SQL Server 2000下收到如下错误: 该操作未能执行,因为 OLE DB 提供程序 ‘ SQL OLE DB 无法 启动 分布式事务 。 [ OLE / DB provider returned message: 新事务不能登记到指定的事务处理器中。 ] OLE DB 错误跟踪[ OLE / DB Provide
一、  问题现象在执行 分布式事务 时,在 sql server 2005下收到如下错误: 消息 7391,级别 16,状态 2,过程 xxxxx,第 16 行 无法 执行该操作,因为 链接 服务器 "xxxxx" 的 OLE DB 访问 接口 " SQL N CLI " 无法 启动 分布式事务 。 在 sql server 2000下收到如下错误: 该操作未能执行,因为 OLE DB 提供程序 ' SQL OLE DB ' ...
在存储过程中使用事务,并且使用 链接 服务器 时,报以下错误: 无法 执行该操作,因为 链接 服务器 "XXX" 的 OLE DB 访问 接口 " SQL N CLI 10 " 无法 启动 分布式事务 链接 服务器 "XXX"的 OLE DB 访问 接口 " SQL N CLI 10 " 返回了消息 "没有活动事务。 解决方法: 1、修改host设置,在C:\Windows\System32\drivers...
今天同事遇到这样一个问题: “因为 链接 服务器 “XXXX” 的 OLE DB 访问 接口 SQL N CLI 10 无法 启动 分布式事务 ”。 就跑来问我啦。大致的情况就是在2台 服务器 时间使用 DB Link时候导致的问题,具体一点就是直接在数据库调用 DB Link没有问题,但是在存储过程中调用时会出现这个错误的。 因为我对 DB Link也不是特别熟悉,所以就有啥查啥咯。最终的解决方案是这
(1)通过 链接 服务器 , 在对不同主机的两台 服务器 进行资料同步时, 如果不 启动 事物,资料可以成功更新到对方 服务器 的数据库上, 如果 启动 事物, 则报错: 链接 服务器 "192.168.1.91"的 OLE DB 访问 接口 " SQL N CLI " 返回了消息 "该事务管理器已经禁止了它对远程/网络事务的支持。"。 消息 7391,级别 16,状态 2,第 84 行 无法 执行该操作,因为 链接 服务器 "192
链接 服务器 " 10 .198.80.97"的 OLE DB 访问 接口 " SQL N CLI 11" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。