192.168.1.100上有两个存储过程,ProcA和ProcB,
ProcA调用了ProcB,
ProcB中调用了192.168.1.200上某数据库的表进行查询
在192.168.1.100的查询分析器里运行ProcB,结果和速度都很正常
在192.168.1.100的查询分析器里运行ProcA,等待非常久都没有结果,造成查询分析器死掉

存储过程如下:
CREATE    PROCEDURE  dbo.ProcB
AS
Begin
 SELECT Holidayday FROM [192.168.1.200].CMS.dbo.outtime  
END
GO

CREATE    PROCEDURE  dbo.ProcA
AS
BEGIN
 create table #tbl (Holidayday datetime)
 insert into #tbl exec ProcB
 select * from #tbl
 drop table #tbl
END
GO

把ProcB中调用192.168.1.200表的语句用本地数据库表代替(也就是不存在分布式查询),运行
ProcA和ProcB都很正常,存储过程修改如下:
CREATE    PROCEDURE  dbo.ProcB
AS
Begin
 -----------SELECT Holidayday FROM [192.168.1.200].CMS.dbo.outtime  
 SELECT Holidayday FROM CMS.dbo.tmfHolidaySched_HAI
END
GO

CREATE    PROCEDURE  dbo.ProcA
AS
BEGIN
 create table #tbl (Holidayday datetime)
 insert into #tbl exec ProcB
 select * from #tbl
 drop table #tbl
END
GO

我还做了另外一个测试,存储过程修改如下,就是调用内嵌存储过程时,不进行数据集插入表操作,这样也能顺利运行,但是这样就无法获得子存储过程返回的数据集了:
CREATE    PROCEDURE  dbo.ProcB
AS
Begin
 SELECT Holidayday FROM [192.168.1.200].CMS.dbo.outtime  
END
GO

CREATE    PROCEDURE  dbo.ProcA
AS
BEGIN
 create table #tbl (Holidayday datetime)
 exec ProcB
 select * from #tbl
 drop table #tbl
END
GO


不知道究竟什么原因造成的,我想跟分布式查询可能有一定关系,还请各位赐教!!多谢了!

相关文章:

  • 2021-11-17
  • 2021-11-28
  • 2022-12-23
  • 2022-02-23
猜你喜欢
  • 2021-11-05
  • 2022-03-03
  • 2021-10-13
相关资源
相似解决方案