Por razões fora do meu controle, devo encontrar uma solução para esse problema. Simplesmente reinstalar a instância não é uma opção. O nome do servidor que aparece como server_id 0 em sys.servers ainda mostra o nome do servidor antigo.
Estou recebendo um erro ao executar o comando abaixo:
sp_dropserver 'OLD_INSTANCE'
GO
sp_addserver 'NEW_INSTANCE', Local
GO
Mensagem de erro:
Msg 15190, Nível 16, Estado 1, Procedimento sp_dropserver, Linha 67
Ainda há logins remotos ou logins vinculados para o servidor 'OLD_INSTANCE'.
Msg 15028, nível 16, estado 1, procedimento sp_addserver, linha 87
O servidor 'NEW_INSTANCE' já existe.
O mais estranho é que o login remoto é um login 'nulo'.
exec sp_dropremotelogin @remoteserver = 'OLD_INSTANCE'
go
Mensagem de erro:
Msg 15185, nível 16, estado 1, procedimento sp_dropremotelogin, linha 70
Não há nenhum usuário remoto '(null)' mapeado para o usuário local '(null)' do servidor remoto 'OLD_INSTANCE'.
Não existem logins para a instância antiga.
sp_helpremotelogin 'OLD_INSTANCE'
Msg 15201, Nível 16, Estado 1, Procedimento sp_helpremotelogin, Linha 37
Não há logins remotos para o servidor remoto 'OLD_INSTANCE'.
Como renomeio esta instância se não consigo descartar o login inexistente? Existe uma maneira de liberar os logins?
Você precisa verificar ambos
sys.remote_logins
esys.linked_logins
. Você deve ser capaz de criar um script dinamicamente para descartar o conjunto que encontrar:Eu tive que postar, porque isso me ajudou muito hoje em renomear uma instância padrão do SQL2014...
Você também pode usar o seguinte:
Isso absolutamente salvou meu bacon hoje. Obrigado por este post e espero que o meu também possa ajudar outras pessoas.
Contexto: houve um failover do SQL2008 para uma nova instalação do SQL2014. Existem algumas máquinas SQL de produção vinculadas de acordo com as especificações do nosso fornecedor de software.
Eu estava tentando renomear o servidor de 2014 para corresponder ao IP e ao nome do servidor de 2008 (já alterado para algo diferente), mas continuava recebendo o erro de logins remotos/vinculados existentes.
Depois de MUITA pesquisa, o comando @droplogins funcionou.
Espero que isso ajude alguém no futuro.