有数据库服务器A、B,  已在A中创建B为链接服务器
  
在A能直接执行B中的存储过程  Bproc1,该存储过程返回一个查询结果集
即exec  Bproc1  能成功执行,返回结果集但在A中执行以下语句时, 报错 “其他会话正在使用事务的上下文”
creat table #Atb1()
insert into #Atb1 (exec Bpoc1)
如何解决这个问题?
#Atb1的字段与 Bproc1结果集的字段是匹配的。

解决方案 »

  1.   

    creat table #Atb1(COL1 ...) 
    GO
    insert into #Atb1 exec Bpoc1 参数
      

  2.   

    ---一种解释查看一下该存储过程中是否有链接服务器指向本地,SQLSERVER2005不支持在分布式事务处理中存在指向本地的链接服务器(环回链接服务器)---又一种解释
      其原因是由于计算机名和sql server 2005的servername不一致所致。
      解决方法:
      先执行
      select @@servername
      查看数据库中的servername
      然后执行:
      sp_dropserver ’old_name’
      go
      sp_addserver ’new_name’, local
      其中old_name为select @@servername语句的结果,new_name为主机名
      

  3.   

    creatE table B..#Atb1(COL1 ...) 
    GO
    insert into B..#Atb1 exec A..Bpoc1 参数指定服务器名