在SQLServer的作业中, 用到链接服务器是比较常见的,但链接服务器偶尔不是那么稳定无法连接到, 这种情况会导致作业的步骤失败。那如何避免呢?
可以先测试链接服务器, 如果正常再执行, 连接不到就不要执行了。
但测试的次数也还是要限制, 不能无限循环, 要不出了错也没办法反馈出来。
DECLARE @tryTimes INT --重试次数
, @linkedServerName nvarchar(128) --链接服务器名称
, @returnVal INT --返回结果
SET @tryTimes=5
set @linkedServerName = 'MylinkedServerName';
WHILE @tryTimes>0
BEGIN
BEGIN TRY
EXEC @returnVal = sys.sp_testlinkedserver @linkedServerName
END TRY
BEGIN CATCH
set @returnVal = sign(@@error);
END CATCH
--正常则退出
IF @returnVal=0
BEGIN
BREAK;
END
--异常则等待N秒 再重试
WAITFOR DELAY '00:00:10'
SET @tryTimes=@tryTimes-1
END
if @returnVal <> 0
BEGIN
RAISERROR ('无法连接到链接服务器!', 16, 2 );
END
ELSE
BEGIN
--加入需要执行的代码
PRINT '链接服务器测试正常,开始执行操作……'
END