跨sql服务器数据交互报错:其他会话正在使用事务的上下文。

yanele 2020-10-29 10:25:03
1、现在A、B两台SQL服务器,IP地址分别为192.168.0.1与192.168.20.2,考虑到双方相互取值,建立了‘链接服务器’。
2、现在有较复杂的应用,考虑先写存储过程将数据获对到后,交给前端程序调用。
1)、先在A服务器执行一系列查询;
2)、再通过‘链接服务器’方式从B服务器执行一系列查询;
【需要A服务器的查询作为其条件,现在是通过‘链接服务器’重新到A服务器取得查询结果】;
3)、最终将A服务器查询结果与B服务器返回的结果组合后,最终结果交给前端程序调用A服务器的这个存储过程;

问题:前端程序调用报错:其他会话正在使用事务的上下文。 Microsoft 分布式事务处理协调器(MS DTC)已取消此分布式事务。【直接在SQL里执行A服务器的存储过程也是OK的】

百度查询了该问题,意思是造成了数据回路,将第2个动作‘通过‘链接服务器’重新到A服务器取得查询结果’屏蔽掉就OK了,但是这并不是最终想要的结果。求助各路大神,这种该如何解决?

【不知道能不能先在A服务器查询的结果存入临时表,再将临时表数据作为第2个动作,通过‘链接服务器’方式调用B服务器存储过程的参数传入执行?】
...全文
566 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
不化之冰 2020-10-29
  • 打赏
  • 举报
回复
最终执行的时候是在哪个服务器上执行的,看楼主的问题,是在B服务器上先通过连接服务器查A服务器上的数据,再在B服务器上把查询的结果作为条件执行一段查询

建议是吧A服务器的查询结果放到一个临时表或者变量里面,再在B服务器上进行查询

另报其他会话正在使用事务的上下文大概是因为走了链接服务器导致查询的效率太慢了造成死锁,然后msdtc自动把你这个进程杀掉了

22,301

社区成员

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

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