在论坛看到有人提问是否可以用T-SQL测试LinkedServer的连接是否正常,这样访问多个Linked Server的时候如果其中的一个连接失败就可以跳过不去处理。
在SQLServer 2005和之后的版本中提供了一个系统存储过程 "sp_testlinkedserver"可以用来测试LinkedServer是否连通。这个存储过程以Linked Server的名称作为输入参数,返回值0表示成功,1返回失败。
下面是一段测试代码:
declare @srvrnvarchar(128),@retvalint;
set@srvr='MylinkedServerName';
begintry
exec @retval=sys.sp_testlinkedserver@srvr;
endtry
begincatch
set @retval=sign(@@error);
endcatch;
if@retval<> 0
raiserror('Unable to connect toserver. This operation will be tried later!',16, 2 );
在我机器上执行后出现下面的错误:
Msg 50000,Level 16, State 2, Line 11
Unable toconnect to server. This operation will be tried later!
更多信息可以参考:
Testlinked server connection settings