代码之家  ›  专栏  ›  技术社区  ›  Jonathan Escobedo

删除单个服务器上所有与SQL Server链接的服务器

  •  4
  • Jonathan Escobedo  · 技术社区  · 15 年前

    我正在使用SQLServerManagementStudio 2008(ssms.exe)连接本地SQLServer2000,因此我注意到,每次尝试输入链接服务器选项时,它都会在中间崩溃,因此我想删除所有链接到那里的服务器,然后再试一次。

    我应该使用什么脚本,或者在T-SQL上运行什么命令来删除所有链接的服务器,而不指定每个链接服务器的名称。

    谢谢

    6 回复  |  直到 15 年前
        1
  •  9
  •   gyromonotron    15 年前

    你可以执行 sp_dropserver 对于使用数据库光标的所有链接服务器。下面的示例演示如何执行此操作。

        DECLARE @sql NVARCHAR(MAX)
    
        DECLARE db_cursor CURSOR FOR  
            select 'sp_dropserver ''' + [name] + '''' from sys.servers
    
        OPEN db_cursor   
        FETCH NEXT FROM db_cursor INTO @sql   
    
        WHILE @@FETCH_STATUS = 0   
        BEGIN   
    
               EXEC (@sql)
    
               FETCH NEXT FROM db_cursor INTO @sql   
        END   
    
        CLOSE db_cursor   
        DEALLOCATE db_cursor
    
        2
  •  1
  •   davek    15 年前

    我认为您一次只能在链接服务器上删除,使用 sp_dropserver :

    http://msdn.microsoft.com/en-us/library/ms174310.aspx

    你可以打电话 sp_linkedservers

    http://msdn.microsoft.com/en-us/library/ms189519.aspx

    将返回的列表读入一个临时表,然后在该表中循环,调用 sp_dropserver

        3
  •  1
  •   Prahalad Gaggar    12 年前

    连接到服务器时:

    select 'exec sp_dropServer ''' + name + '''', * from sys.servers where is_linked = 1
    

    运行输出的第一列。赢

        4
  •  0
  •   Nathan Wheeler    15 年前

    你不能随意地从每台服务器上删除所有链接的服务器。您必须(至少)打开到每个服务器的连接,并为每个链接的服务器运行某种形式的脚本或命令。如果您想知道如何编写脚本来删除所有链接的服务器,我建议您从 sp_linkedservers sp_dropserver

        5
  •  0
  •   Satya SKJ    15 年前

    另外,对应的SQL 2000 server的service pack是什么?

    我宁愿修复这个工具问题,而不是简单地重新创建它们。

        6
  •  0
  •   ajk    11 年前

    --remove all linked servers    
    declare @sql nvarchar(max)
    
    while exists (select 1 from sys.servers where server_id>0)
    begin
        select @sql= N'sp_dropserver ' + [name] from sys.servers where server_id>0  
        exec (@sql)
    end