链接服务器连接成功后如何执行SQL脚本
这个脚本来自其他网站。 但我不知道如何在连接成功时在脚本下方插入查询。
----------------------------------------------
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 );
-----------------------------------------------------
谢谢大家 我找到了答案。
DECLARE @tryTimes INT, @linkedServerName nvarchar(128), @returnVal INT
SET @tryTimes=5
SET @linkedServerName='server1'
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
WAITFOR DELAY '00:02:00'
SET @tryTimes=@tryTimes-1
END
IF @returnVal <> 0
BEGIN
RAISERROR ('Cannot connect LinkedServer',16,2);
END
ELSE
BEGIN
SELECT count(*) FROM [xxxx].[xxxx].[xxxx].[xxxxxx]
PRINT 'run your query'
END
重试逻辑的改进版本。
sp_testlinkedserver
如果有异常就会抛出,所以抓住它。DECLARE @tryTimes INT = 5, @linkedServerName sysname = 'server1';
WHILE @tryTimes > 0
BEGIN
BEGIN TRY
EXEC sys.sp_testlinkedserver @linkedServerName;
BREAK;
END TRY
BEGIN CATCH
SET @tryTimes -= 1;
IF @tryTimes = 0
THROW;
END CATCH
WAITFOR DELAY '00:02:00';
END;
EXEC sp_executesql N'
SELECT count(*)
FROM [xxxx].[xxxx].[xxxx].[xxxxxx];
'; -- add parameters as needed
我必须说,这样做的智慧值得怀疑。如果连接时出现错误,那么错误不太可能在 2 秒内改变。将此逻辑放在您的客户端应用程序中可能更明智,并允许用户决定要做什么。