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