更改了代码中的一些内容……试试吧。
- IsOff仅表示连接失败。
- 我添加了where子句以仅查看链接服务器
- 我从未将游标视为变量,所以我删除了该游标以及其他不需要的变量
- 使用了TRY / CATCH,因为sys.sp_testlinkedserver引发了异常,如果sys.sp_testlinkedserver不成功,则会引发异常。
- 返回失败的原因
- 将所有结果存储到表变量中,仅返回失败
。
DECLARE @name NVARCHAr(100)declare @table table (IsOff int, ServerName varchar(100), TheError varchar(4000))DECLARE getid CURSOR FORSELECt name FROM sys.servers where is_linked = 1OPEN getidFETCH NEXT FROM getid INTO @nameWHILE @@FETCH_STATUS = 0BEGIN begin try exec sys.sp_testlinkedserver @name end try begin catch insert into @table values (1,@name,ERROR_MESSAGE()) end catchFETCH NEXT FROM getid INTO @nameENDCLOSE getidDEALLOCATE getidselect ServerName, TheError from @table where IsOff = 1



