分布式事务是跨越两个或多个数据库的单个数据库引擎实例中的事务。简单举例比如有数据库服务器SERVER A,SERVER B ,
在SERVER A 上的过程里面启用了事务,事务中更新SERVER B上的表。这就是分布式事务。
应用中 出错信息经常是:
无法启动链接服务器 "XXXX" 的 OLE DB 访问接口 "SQLNCLI" 的嵌套事务。
经过网上搜索和实践,解决此问题。要点如下:
1.过程中 事务开始前加上 SET XACT_ABORT ON,显示指示错误后回滚。
2.sql server 服务器设置 '允许远程访问'
3.建立链接服务器,RPC ,RPC OUT 设为'true'
4 开启MSDTC服务
打开“管理工具――组件服务”,以此打开“组件服务――计算机”,在“我的电脑”上点击右键。在MSDTC选项卡中,点击“安全配置”按钮。
在安全配置窗口中做如下设置:
l选中“网络DTC访问”
l在客户端管理中选中“允许远程客户端”“允许远程管理”
l在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证”
l保证DTC登陆账户为:NT Authority\NetworkService
5.开启RPC端口
RPC 使用135端口,telnet IP 135 可进行测试。
6 host文件加入对方IP及机器名
10.0.0.1 Server B
使用dtcping 测试
微软官方下载地址 : http://support.microsoft.com/kb/918331/
在SERVER B上运行DTCPING
到SERVER A 上运行DTCPING ,输入SERVER B 机器名(NETBIOS NAME) ,点PING,输出信息成功则MSCDTC可用