SQL 消息 7391,因为链接服务器‘’的OLE DB访问接口 ‘SQLNCLI’无法启动分布式事务问题处理

系统:Windows Server 2008   +MS SQL 2008 2R

场景:在将SQL 2005数据库迁移到SQL 2008上时对链接服务器的数据表做增删改是正常的,在触发器中对链接服务器的数据表做增删改就有问题了,上图

来自微软官方的决解方案:

https://support.microsoft.com/zh-cn/help/329332/you-receive-error-7391-when-you-run-a-distributed-transaction-against

来自网络对该问题处理方式(测试无效做个记录方便以后排查问题)
--1、是否启动MSDTC服务(需确认双方服务器都开启)
--2、双方135端口是否开启、是否被占用(可用 telnet IP 135 指令检测端口是否打开)
--3、保证没有在发起事物的服务器里执行链接服务器上的查询、视图、存储过程中包含有访问发起事物服务器的操作,
--   这样的操作叫环回(loopback),举个“栗子”:A服务器中执行链接服务器B的存储过程sp_b,在sp_b中存在访问A的操作
--4、查看MSDTC设置
--   打开“管理工具-》组件服务-》计算机-》我的电脑-》MSDTC选项-》安全配置
--   在安全配置里选中:
--  (1)网络DTC访问
--  (2)允许远程客户端、允许远程管理
--  (3)允许入站、允许出站、不要求进行验证
--  (4)DTC登录用户必须保证为:NT Authority/NetWork Service
--   配置完以上所有重启服务器使配置生效(有些电脑可能要先启动DTC服务然后在启动SQL SERVER服务)
--5、链接服务器名称解析问题
--   找到服务器中的hots文件添加IP  + 服务器名称解析

以上所有步骤执行完发现问题依旧存在(这时候基本可以排除MSDTC服务的问题了)

继续排查MSDTC依赖组件是否有问题

可以看出DTC依赖的几个系统组件

这时候祭出微软的dtcping.exe  下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=2868

(dtcping 可能无法直接ping IP 所以需要在系统的host文件中添加IP映射)

 

 

.

从这里看的出是RPC服务有问题

CMKERP2  IP=xxx.24.78.30

ERP-GHN0  IP=xxx.24.78.65

但是在CMKERP2中 用DTCPING工具ping ERP-GHN0  IP=xxx.24.78.100

到现在为止问题很明显了就是存在两台服务器名称一致但是IP不同并且两台电脑存在同一个域中

导致了两台服务器通过服务器名称相互访问时一直导致RPC有问题

最后将.100这台服务器名称改了,并且在域中的映射也改了,最后ERP-GHN0指向了.65

问题决解

最后可通过cmd指令  nbtstat  -a IP来取得主机名

结论:因为链接服务器‘’的OLE DB访问接口 ‘SQLNCLI’无法启动分布式事务问题处理  这个问题产生的原因不一定是因为MSDTC服务配置的问题、有可能是MSDTC依赖的系统组件有问题造成的,所以排查该问题时在确定MSDTC配置正确之后该问题依旧存在的话,那么就去排查MSDTC依赖的组件是否存在问题.

 

有遇到其他情况的歡迎留言讨论这个问题!!!!

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值