远程数据库查询报错“其他会话正在使用事务的上下文”

97ce_twinkle 2010-01-15 10:47:03
有数据库服务器A、B, 已在A中创建B为链接服务器

在A能直接执行B中的存储过程 Bproc1,该存储过程返回一个查询结果集
即exec Bproc1 能成功执行,返回结果集

但在A中执行以下语句时, 报错 “其他会话正在使用事务的上下文”
creat table #Atb1()
insert into #Atb1 (exec Bpoc1)


如何解决这个问题?


#Atb1的字段与 Bproc1结果集的字段是匹配的。
...全文
392 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
97ce_twinkle 2010-01-15
  • 打赏
  • 举报
回复
晕死,乌龙了

看了链接服务器的属性,居然连着本机。
SQL77 2010-01-15
  • 打赏
  • 举报
回复
creatE table B..#Atb1(COL1 ...) 
GO
insert into B..#Atb1 exec A..Bpoc1 参数


指定服务器名
--小F-- 2010-01-15
  • 打赏
  • 举报
回复
---一种解释

查看一下该存储过程中是否有链接服务器指向本地,SQLSERVER2005不支持在分布式事务处理中存在指向本地的链接服务器(环回链接服务器)

---又一种解释


  其原因是由于计算机名和sql server 2005的servername不一致所致。
  解决方法:
  先执行
  select @@servername
  查看数据库中的servername
  然后执行:
  sp_dropserver ’old_name’
  go
  sp_addserver ’new_name’, local
  其中old_name为select @@servername语句的结果,new_name为主机名
SQL77 2010-01-15
  • 打赏
  • 举报
回复
creat table #Atb1(COL1 ...) 
GO
insert into #Atb1 exec Bpoc1 参数

22,210

社区成员

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

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