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

zhangluotian 2014-05-28 07:25:18
夸服务触发器,分布式事物提示错误
触发器代码没问题
本服务器ip 192.168.7.202
建立链接
exec sp_addlinkedserver 'sr2','','SQLOLEDB','172.16.1.3' --这个ip是被链接的服务器地址在本服务器也连的上ping的通
exec sp_addlinkedsrvlogin 'sr2','false',null,'ehr','Wen@kq'
go

本服务器sql2008r2
被连接服务器sql2000 已经打了sp4补丁
触发器代码没有问题执行成功

百度的一下方法都试过
1、关闭双方防火墙
2、启动双方MSDTC服务
3、事务开始前加入set xact_abort ON语句
4、管理工具――组件服务设置允许远程客户端、允许远程管理、允许入站、允许出站、不要求进行验证
5、DTC登陆账户为:NT Authority\NetworkService
6、服务器和名称解析,我这里直接用的ip地址应该不存在这个问题

怀疑:是否是应为不在同一网段?但是能ping通呀,本地服务器也能连上'172.16.1.3'
其他实在找不出问题了
MSDTC工具也试过了
帮忙解决,顶一下吧,大神们
...全文
6421 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
colorstone2 2015-06-20
  • 打赏
  • 举报
回复
问题找了, 链接服务器 不支持 在本地事务中调用的 我去掉 set xact_abort on 就可以了
colorstone2 2015-06-20
  • 打赏
  • 举报
回复
我也遇到了同样的问题, 貌似用sa帐户链接服务器 就可以解决了,这个只是 帐户权限问题
angela_365 2014-10-09
  • 打赏
  • 举报
回复
求赐教 谢谢
angela_365 2014-10-09
  • 打赏
  • 举报
回复
楼主 问题解决了吗? 我也遇到了
zhangluotian 2014-05-30
  • 打赏
  • 举报
回复
引用 10 楼 SmithLiu328 的回复:
用DTCPING测试一下两边是否真正联通。
谢谢,两边都试了通的
zhangluotian 2014-05-30
  • 打赏
  • 举报
回复
引用 9 楼 luckyrandom 的回复:
曾有个网友说找我付费支持的,没后文了。。注意防火墙
防火墙都关了,付费可以呀多少。。。可以远程帮忙么
zhangluotian 2014-05-30
  • 打赏
  • 举报
回复
引用 8 楼 ap0405140 的回复:
建议 1.查看插入的目标表是否有其他的约束? 如foreign key,not null,唯一约束等等.看具体是违反了哪一条. 2.调试时,可以暂时将select A0101,C01TC,A0177 from inserted的值插入一个本地的自定义的表(表上无任何约束的). 这样就能更直观的看到数据本身了.
谢谢回复啊,正在继续尝试。我给这三个A0101,C01TC,A0177 值写成了固定的值'张三','152825199205','100001'这样,执行时候是正确了,这三个值也插入到第二个服务器的库了。。 所以 1应该之前的错误是这三个值是空的,那么我前台这三个值确实是有值的,不知道为啥到执行触发器时候没值了,把触发器删除本地是可以成功。 2我在我本地搭了相同的俩库,执行这个触发器是完全没问题的
KevinLiu 2014-05-30
  • 打赏
  • 举报
回复
用DTCPING测试一下两边是否真正联通。
Q315054403 2014-05-29
  • 打赏
  • 举报
回复
曾有个网友说找我付费支持的,没后文了。。注意防火墙
唐诗三百首 2014-05-29
  • 打赏
  • 举报
回复
建议 1.查看插入的目标表是否有其他的约束? 如foreign key,not null,唯一约束等等.看具体是违反了哪一条. 2.调试时,可以暂时将select A0101,C01TC,A0177 from inserted的值插入一个本地的自定义的表(表上无任何约束的). 这样就能更直观的看到数据本身了.
zhangluotian 2014-05-29
  • 打赏
  • 举报
回复
A0101,C01TC,A0177 字段明明都有值,就只在执行触发器时候却成了空值。。。。
zhangluotian 2014-05-29
  • 打赏
  • 举报
回复
引用 4 楼 ap0405140 的回复:
对触发器所在表的DML语句,加分布式事务试试,

begin distributed tran
  [触发器所在表的DML语句]
commit tran
连接好像成功了,但新问题提示: 由于列 "user_no",链接服务器 "srv2" 的 OLE DB 访问接口 "SQLNCLI10" 无法 INSERT INTO 表 "[srv2].[bsv5].[dbo].[dt_user]"。数据值违反了该列的完整性约束。 就是前台也写了值,但是插入时候为啥还是空,所以提示违反了完整性。。。 我做了测试,把这几个字段写成固定值就可以插入进去了

create trigger tr_insert_usra01 on usra01
for insert
as
set xact_abort on
insert srv2.bsv5.dbo.dt_user(user_lname,user_no,user_id)
select A0101,C01TC,A0177 from inserted
go
就是前台写了A0101,C01TC,A0177 字段都有值,但执行时候却提示违反了约束,查了一下这个三个字段再插入时候都是空的,为啥啊。。。!!
zhangluotian 2014-05-29
  • 打赏
  • 举报
回复
引用 4 楼 ap0405140 的回复:
对触发器所在表的DML语句,加分布式事务试试,

begin distributed tran
  [触发器所在表的DML语句]
commit tran
谢谢版主这么热心,使用了语句试了还是不行,奇怪了,别人都很容易解决,郁闷死了
唐诗三百首 2014-05-28
  • 打赏
  • 举报
回复
对触发器所在表的DML语句,加分布式事务试试,

begin distributed tran
  [触发器所在表的DML语句]
commit tran
zhangluotian 2014-05-28
  • 打赏
  • 举报
回复
RPC开着的。。。。定一下吧,定一下啦,求扩撒,求转播,急
starseeker7 2014-05-28
  • 打赏
  • 举报
回复
这个开了吗? --開啓外部RPC配置,允许其它SQL Server使用RPC远程连接到本SQL Server EXEC sp_serveroption 'mgfTS','rpc out','TRUE' (也可在企业管理器中-->数据库-->安全-->链接数据库-->点击你需要配置的链接数据库-->属性页--> "server options"-->勾选rpc out) 以下是在被訪問端數據庫設置 --設定允許外聯 exec sp_configure 'show advanced options',1 --開啓高級設置 reconfigure WITH OVERRIDE; exec sp_configure 'Ad Hoc Distributed Queries',1--允許openrowset opendatasource訪問 reconfigure WITH OVERRIDE; exec sp_configure 'show advanced options',0 --關閉高級設置 reconfigure WITH OVERRIDE;
zhangluotian 2014-05-28
  • 打赏
  • 举报
回复
顶一下!顶一下!顶一下!顶一下!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧