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