紧急求救 调用远程存储过程无限期执行问题
问题是这样的,我在服务器A上调用服务器B上的存储过程,那个存储过程里会去服务器C抓取数据,B上的存储过程很简单 只从服务器C返回一条2个字段的数据,然后我在A上调用时完全没问题,执行时间小于1秒。但是当我在A上建立个临时表,想把B拿到的结果集插入到A去 就会出现无限期执行的情况。各位大虾有谁碰到过这种问题吗?
A的地址为192.168.200.10
B的地址为192.168.210.10
C的地址为192.168.110.10
B上的存储过程
CREATE PROCEDURE TTS.[dbo].[GETINFO]
@CD varchar(6)
AS
BEGIN
SELECT usercd,username FROM oPENDATASOURCE('SQLOLEDB','DATA SOURCE=192.168.110.10;USER ID=sa;password=XXXXX').TESTDB.dbo.users where usercd=@CD
END
A上调用无限期执行的语句
create table #tmpTABLE
(
cd varchar(10) null,
name varchar(100) null
)
insert into #tmpTABLE (cd, name)
exec opendatasource('SQLOLEDB','data source=192.168.210.10;user id=sa;password=yyyyy').TTS.dbo.GETINFO 'dsxin'
------解决方案--------------------
检查是否存在阻塞甚至死锁。要是开启了跨服务器连接,不需要用exec opendatasource('SQLOLEDB','data source=192.168.210.10;user id=sa;password=yyyyy').TTS.dbo.GETINFO 'dsxin'这样吧?
------解决方案--------------------
SQL code
--先建立连接试试吧
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','192.168.30.21'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'SA','key123'
exec sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程
go
--调用存储过程示例
exec srv_lnk.DBname.dbo.PROCname
go