Estamos no processo de substituir nosso SQL Server e decidimos que renomear o servidor em si será muito mais fácil do que mudar todo o restante para apontar para um novo nome. Encontramos instruções sobre como alterar o nome da instância do SQL Server para corresponder ao nome do computador que se parece com isso:
sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local
Embora o SQL Enterprise Manager não pareça gostar desses juntos. Eu tive que mudá-lo para o seguinte para fazê-lo funcionar em conjunto:
sp_dropserver 'OLDSERVER'; GO
sp_addserver 'NEWSERVER', 'local'; GO
O que não é ruim, mas eu preferiria que as coisas fossem mais automatizadas. Como @@ ServerName retorna o nome da instância, descobri como automatizar a primeira linha:
sp_dropserver @@ServerName; GO
Eu também aprendi que SERVERPROPERTY ('ServerName') deveria retornar o nome do computador, então eu pensei que poderia usar isso para automatizar a segunda parte, mas isso não funcionou:
sp_addserver SERVERPROPERTY('ServerName'), 'local'; GO
Eu tentei definir uma variável, o que preciso fazer de qualquer maneira para atualizar os trabalhos do SQL Agent, mas isso também não funcionou:
DECLARE @srv sysname;
SET @srv = CAST(SERVERPROPERTY('ServerName') AS sysname);
sp_addserver @srv, 'local'; GO
Sintaxe incorreta próxima a 'sp_addserver'.
Eu gostaria muito de não precisar codificar o novo nome do servidor no script, para torná-lo mais facilmente reutilizável. Alguém tem alguma ideia?