最新消息:本站持续更新中,请注意添加收藏夹。搜索关键词时,多换一个同义词。比如要搜索界面,可以尝试页面,画面,PER档等词汇。善于搜索,将大大提高你的查找效率。

处理SQLNCLI11无法启动分布式事务

实施与配置 bron1984 2513浏览

关于分布式事务的 OLE DB 访问接口 “SQLNCLI” 无法启动分布式事务

 

<! 注意,接口涉及两边系统,所以 以下设置在事务的两台服务器都要设置 !>

 

检查一:访问接口设置。此步不是必要。通常我会这么设置而已。

检查二:确定服务已经开启

检查三:组件服务里面MSTDC

检查四:MSDTC依赖RPC,RPC使用端口是TCP 135 Port。所以防火墙放行135端口

出站规则同样设置一次

 

检查五:允许应用通过防火墙

检查六:打开smss

选择服务器,右键选择属性
IMG_256

IMG_257

右键链接服务器,选择属性
IMG_258
查看选项是否都为
IMG_259

检查七:虚拟机克隆问题

到此还是事务执行不成功,是因为我的虚拟机是克隆的。克隆的虚拟机会导致 MSDTC 具有相同的ID值,从而出问题。通过查看操作系统的event 日志。所以出现问题怎么也解决不了的时候,可以考虑使用安装的系统来操作。
IMG_260

IMG_261

IMG_262
执行以下命令

msdtc -uninstall

msdtc -install

 

重新安装后服务是自动启动的,修改为手动启动
并且启动此服务。
IMG_263

检查八:保证链接服务器中语句没有访问发起事务服务器的操作

在发起事务的服务器执行链接服务器上的查询、视图或存储过程中含有访问发起事务服务器的操作【即事务的 发起方和接受方 都在一台服务器上。比如同在一个SQLServer 中,有DB1,DB2 两个数据库。DB1和DB2之间用 链接服务器 就会出现 环回 现象。此时应该把 链接去掉,因为可以直接连】,这样的操作叫做环回(loopback),是不被支持的,所以要保证在链接服务器中不存在此类操作。

检查九:在事务开始前加入set xact_abort ON语句

对于大多数 OLE DB 提供程序(包括 SQL Server),必须将隐式或显示事务中的数据修改语句中的 XACT_ABORT 设置为 ON。唯一不需要该选项的情况是在提供程序支持嵌套事务时。

通过以上设置基本都可以了。

转载请注明:赫非域 » 处理SQLNCLI11无法启动分布式事务