在论坛看到有人提问是否可以用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

sp_testlinkedserver