Problem
Remove a linked server
DECLARE @drop_remote_name NVARCHAR(100) = 'SQL_User'
DECLARE @drop_linked_server_name NVARCHAR(100) = 'server_name'
DECLARE @sql_string NVARCHAR(MAX)
IF EXISTS(
SELECT ser.name AS server_name, logs.remote_name, pals.name AS principal_name
FROM master.sys.servers AS ser
INNER JOIN master.sys.linked_logins AS logs ON ser.server_id = logs.server_id
INNER JOIN master.sys.server_principals AS pals ON logs.local_principal_id = pals.principal_id
WHERE 1=1
AND ser.is_linked = 1
AND logs.remote_name=@drop_remote_name
AND ser.name=@drop_linked_server_name
)
BEGIN
RAISERROR('starting EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname = %s, @locallogin = %s...',0,1,@drop_linked_server_name,@drop_remote_name) WITH NOWAIT
EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname = @drop_linked_server_name, @locallogin = @drop_remote_name
RAISERROR('completed EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname = %s, @locallogin = %s!',0,1,@drop_linked_server_name,@drop_remote_name) WITH NOWAIT
END
ELSE
RAISERROR('@rmtsrvname = %s, @locallogin = %s were not found',0,1,@drop_linked_server_name,@drop_remote_name) WITH NOWAIT
IF EXISTS(
SELECT *
FROM master.sys.servers
WHERE name=@drop_linked_server_name
)
BEGIN
RAISERROR('starting EXEC master.sys.sp_dropserver @server= %s...',0,1,@drop_linked_server_name) WITH NOWAIT
EXEC master.sys.sp_dropserver @server=@drop_linked_server_name
RAISERROR('completed EXEC master.sys.sp_dropserver @server= %s!',0,1,@drop_linked_server_name) WITH NOWAIT
END
ELSE
RAISERROR('@server= %s was not found',0,1,@drop_linked_server_name) WITH NOWAIT