使用与本地SQL Server 2000连接的SQL Server Management Studio 2008(ssms.exe),所以我注意到每次我尝试在链接服务器上输入选项时,它都会中断地崩溃,所以我想要删除所有服务器链接在那里再试一次。在单台服务器上删除所有SQL Server链接服务器
我应该使用什么脚本或T-SQL上的哪些命令我必须运行以删除所有文件,而无需指定链接的每个服务器的名称。
感谢
使用与本地SQL Server 2000连接的SQL Server Management Studio 2008(ssms.exe),所以我注意到每次我尝试在链接服务器上输入选项时,它都会中断地崩溃,所以我想要删除所有服务器链接在那里再试一次。在单台服务器上删除所有SQL Server链接服务器
我应该使用什么脚本或T-SQL上的哪些命令我必须运行以删除所有文件,而无需指定链接的每个服务器的名称。
感谢
对于使用数据库游标的所有链接服务器,您可以执行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
我认为你可以链接服务器上一次只能删除,使用sp_dropserver
:
http://msdn.microsoft.com/en-us/library/ms174310.aspx
你可以称之为sp_linkedservers
http://msdn.microsoft.com/en-us/library/ms189519.aspx
读返回列入临时表中,然后循环播放在那个表格中,为每个元素调用sp_dropserver
。
我该如何做第二个选项?它的声音很有趣 – 2010-01-06 20:14:32
您不能随意删除每台服务器上的所有链接服务器。您必须(至少)打开每个服务器的连接,并为每个链接的服务器运行某种形式的脚本或命令。如果您想知道如何编写脚本来删除所有链接的服务器,我建议您首先查看sp_linkedservers
和sp_dropserver
。
这不是OP要求的。他们想要从一台服务器上删除所有的LS。 – 2012-10-17 22:47:45
@EricHiggins - 当然是......他们需要为每个链接的服务器运行一个命令,特别是'sp_dropserver'。我会说这不是一个好的答案,因为我没有为OP写脚本,但它肯定回答了这个问题。 – 2012-10-22 20:51:17
虽然连接到服务器:
select 'exec sp_dropServer ''' + name + '''', * from sys.servers where is_linked = 1
运行输出第一列。赢得。
这也允许你选择你想摆脱的服务器。它可能挂在连接上,发生垃圾,它不知道如何处理服务器或链接驱动程序。
它在崩溃时是否收到任何错误消息? 什么是相应的SQL 2000服务器的服务包?
我宁愿修复这个工具问题,而不是简单地重新创建它们。
没有游标的版本。 server_id = 0是本地服务器而不是链接服务器。
--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
从sys.servers中选择'sp_dropserver'''+ [name] +''''...你可以为'sp_dropserver'添加WHERE is_linked = 1 – 2012-10-17 22:46:38
+1,这就是我们要找的。 – AceMark 2013-09-06 07:48:59