链接服务器 无法启动分布式事务

zlmoon 2015-11-23 04:32:01
链接服务器"mylink"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "该伙伴事务管理器已经禁止了它对远程/网络事务的支持。"。
消息 7391,级别 16,状态 2,过程 copyRow,第 7 行
无法执行该操作,因为链接服务器 "mylink" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。

求大神帮忙,谢谢!
...全文
3608 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_41626142 2019-11-13
  • 打赏
  • 举报
回复
为啥还是不行
zlmoon 2016-12-01
  • 打赏
  • 举报
回复
例子: ALTER trigger [dbo].xxxx for delete as set xact_abort on BEGIN DISTRIBUTED TRANSACTION if .... COMMIT TRAN
zlmoon 2016-12-01
  • 打赏
  • 举报
回复
由于时间关系,好久没有上CSDN, 此问题已解决。 insert,delete,update 前需要加BEGIN DISTRIBUTED TRANSACTION ,在最后记得加上 COMMIT TRAN
吉普赛的歌 2015-12-18
  • 打赏
  • 举报
回复
一楼的做法是对的, 两边都得开启 MSDTC 分布式服务。 我是用 SqlClr 解决的, 写一个 sqlclr 存储过程, 先将远程的数据放到 datatable, 再插入到本地。这样就不存在什么分布式事务了。
中国风 2015-12-18
  • 打赏
  • 举报
回复
看错误提示,是MSTDC配置不正确,用1#方法处理
唐诗三百首 2015-12-18
  • 打赏
  • 举报
回复
能够查询,不能insert,update,delete --> 请问insert,update,delete语句是放在触发器里执行的吗?
唐诗三百首 2015-12-18
  • 打赏
  • 举报
回复
试试这个,

  set xact_abort on 
  begin distributed  transaction
     [insert,update,delete语句]
commit transaction
安涛声依旧 2015-12-18
  • 打赏
  • 举报
回复
这个我以前遇到过,不是系统的事,是SQL里添加链接服务器的时候,有个选项,你试试True或者False试试效果。
我当时是把SQL2000链接到SQL2008报你这个错。
szlixiaolong 2015-12-17
  • 打赏
  • 举报
回复
重新开启服务。
qq_19817827 2015-12-17
  • 打赏
  • 举报
回复
楼主 有没有解决,我也遇到这个问题,求指教
zlmoon 2015-11-23
  • 打赏
  • 举报
回复
现在出现如下问题了: 链接服务器"mylink"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "没有活动事务。"。 消息 7391,级别 16,状态 2,过程 tr_insert_zzBde,第 6 行 无法执行该操作,因为链接服务器 "mylink" 的 OLE DB 访问接口 "SQLNCLI10" 无法启动分布式事务。 能够查询,不能insert,update,delete
zlmoon 2015-11-23
  • 打赏
  • 举报
回复
这些都试过了,还是不行呢.
Yole 2015-11-23
  • 打赏
  • 举报
回复
该伙伴事务管理器已经禁止了它对远程/网络事务的支持 1.双方启动MSDTC服务 MSDTC(分布式交易协调器),协调跨多个数据库、消息队列、文件系统等资源管理器的事务。该服务的进程名为Msdtc.exe,该进程调用系统Microsoft Personal Web Server和Microsoft SQL Server。该服务用于管理多个服务器 . 位置:控制面板--管理工具--服务--Distributed Transaction Coordinator 依存关系:Remote Procedure Call(RPC)和Security Accounts Manager 建议:一般家用计算机涉及不到,除非你启用Message Queuing服务,可以停止。 解决办法: (1)在windows控制面版-->管理工具-->服务-->Distributed Transaction Coordinator-->属性-->启动 (2)在CMD下运行"net start msdtc"开启服务后正常。 注:如果在第1步Distributed Transaction Coordinator 无法启动,则是因为丢失了日志文件,重新创建日志文件,再启动就行了。重新创建 MSDTC 日志,并重新启动服务的步骤如下: (1) 单击"开始",单击"运行",输入 cmd 后按"确定"。 (2) 输入:msdtc -resetlog (注意运行此命令时,不要执行挂起的事务) (3) 最后输入:net start msdtc 回车,搞定! 双方电脑做如下配置(windows2003系统): 2. 单击“添加/删除 Windows 组件”。 3. 选择“应用程序服务器”,然后单击“详细信息”。 4. 选择“启用网络 DTC 访问”,然后单击“确定”。 5. 单击“下一步”;单击“完成”。 6. 在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"。 7. 右键“我的电脑”->“属性”,在MSDTC选项卡中,点击“安全配置”按钮。 8. 在安全配置窗口中做如下设置: (1)选中“网络DTC访问” (2)在客户端管理中选中“允许远程客户端”“允许远程管理” (3)在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证” (4)保证DTC登陆账户为:NT Authority\NetworkService  (5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。 所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。 9. 关闭网络防火墙(或者开放相应的端口135或用services.msc打开服务启动TCP/IP NetBIOS Helper服务) 双方电脑做如下配置(windows2008系统): 2. 单击“控制面板”。 3. 打开“程序和功能”。 4. 单击“打开或关闭windows功能”。 5. 展开“角色”->“应用程序服务器”->“组件服务”->右键“本地DTC” 6. 选择“本地DTC”的“安全选项卡”,做如下设置: (1)选中“网络DTC访问” (2)在客户端管理中选中“允许远程客户端”“允许远程管理” (3)在事务管理通讯中选“允许入站”“允许出站”“不要求进行验证” (4)保证DTC登陆账户为:NT Authority\NetworkService  (5)单击"确定"。这样将会提示您"MS DTC 将会停止并重新启动。 所有的依赖服务将被停止。请按'是'继续"。单击"是"继续。 7. 关闭网络防火墙(或者开放相应的端口135或用services.msc打开服务启动TCP/IP NetBIOS Helper服务)

22,209

社区成员

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

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