Estamos substituindo nosso SQL Server e decidimos que renomear o próprio servidor será muito mais fácil do que alterar todo o resto 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 deles juntos. Eu tive que mudar 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, eu descobri como automatizar a primeira linha:
sp_dropserver @@ServerName; GO
Aprendi também que SERVERPROPERTY ('ServerName') deve retornar o nome do computador, então pensei que talvez pudesse usá-lo para automatizar a segunda parte, mas isso não funcionou:
sp_addserver SERVERPROPERTY('ServerName'), 'local'; GO
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 perto de 'sp_addserver'.
Eu gostaria muito de não precisar codificar o novo nome do servidor no script, para tornar isso mais facilmente reutilizável. Alguém tem alguma idéia?