Мы находимся в процессе замены нашего SQL Server и решили, что переименовать сам сервер будет гораздо проще, чем изменить все остальное, чтобы указать новое имя. Мы нашли инструкции по изменению имени экземпляра SQL Server в соответствии с именем компьютера, которое выглядит следующим образом:
sp_dropserver 'OLDSERVER'
sp_addserver 'NEWSERVER', local
Хотя SQL Enterprise Manager не кажется, что они вместе. Я должен был изменить это на следующее, чтобы заставить это работать вместе:
sp_dropserver 'OLDSERVER'; GO
sp_addserver 'NEWSERVER', 'local'; GO
Что неплохо, но я бы предпочел, чтобы все было более автоматизированным. Поскольку @@ ServerName возвращает имя экземпляра, я понял, как автоматизировать первую строку:
sp_dropserver @@ServerName; GO
Я также узнал, что SERVERPROPERTY ('ServerName') должен возвращать имя компьютера, поэтому я подумал, что, возможно, смогу использовать это для автоматизации второй части, но это не сработало:
sp_addserver SERVERPROPERTY('ServerName'), 'local'; GO
Я попытался установить переменную, что мне все равно нужно сделать, чтобы обновить задания агента SQL, но это тоже не сработало:
DECLARE @srv sysname;
SET @srv = CAST(SERVERPROPERTY('ServerName') AS sysname);
sp_addserver @srv, 'local'; GO
Неверный синтаксис рядом с 'sp_addserver'.
Я бы очень хотел, чтобы в скрипте не было жесткого кодирования нового имени сервера, чтобы его было проще использовать повторно. У кого-нибудь есть идеи?