Подтвердить что ты не робот

SQL Server @@SERVERNAME возвращает старое имя машины?

Я просто наткнулся на проблему в своем SQL Server 2008 R2. Когда я вызываю @@SERVERNAME, он возвращает мое имя компьютера OLD, а не текущее. Почему это? И как я могу это исправить? SQL Server каким-то образом запоминает старое имя машины.

4b9b3361

Ответ 1

Это хорошо известно и документировано, см. Переименовать компьютер, на котором размещен автономный экземпляр SQL Server:

При изменении имени компьютера, на котором запущен SQL Server, новое имя распознается во время запуска SQL Server. У тебя нет снова запустите программу установки до reset имени компьютера. Вместо этого используйте следующие шаги для обновления системных метаданных, которые хранятся в sys.servers и сообщается системной функцией @@SERVERNAME:

sp_dropserver <old_name>;
GO
sp_addserver <new_name>, local;
GO

Вы также можете использовать SERVERPROPERTY('MachineName'), который всегда будет возвращать обновленное имя:

Имя_каталога Имя компьютера Windows, на котором экземпляр сервера Бег. Для кластерного экземпляра используется экземпляр SQL Server на виртуальном сервере в Microsoft Cluster Service, он возвращает имя виртуального сервера.

SERVERPROPERTY('ComputerNamePhysicalNetBIOS') вернет текущий активный node в кластере или то же значение, что и "MachineName" в некластеризованном экземпляре.

Отредактируйте (сторонней стороной), чтобы добавить комментарий WEFX в случае, если кто-то его пропустит:

Кроме того, вам необходимо перезапустить службы SQL (или перезагрузить SQL Server), чтобы SELECT @@SERVERNAME вернул точное (новое) имя сервера

Ответ 2

Я подозреваю, что это потому, что экземпляр был установкой по умолчанию и наследовал имя машины в то время и сохранил его. Попробуйте это?

SELECT SERVERPROPERTY('MachineName')

Ответ 3

Иногда вы можете получить сообщение об ошибке There are still remote logins or linked logins for the server 'yourServerName' при запуске sp_dropserver 'oldServerName';

Если у вас есть такая ошибка, попробуйте вместо этого запустить sp_dropserver 'oldServerName', 'droplogins';.

Ответ 4

Я пробовал все возможные решения, и одобренный ответ не работал у меня. Я немного занялся серфингом и придумал идеальное решение. Я надеюсь, что кто-нибудь найдет это полезным.

1) Откройте раздел реестра Окно + R. Введите regedit

2) Перейдите к * HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server *. Вы увидите много нумерованных каталогов (100, 120, 130...)

ИЛИ

вы можете просто набрать "Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server \" в адресной строке редактора реестра

3) просмотрите все нумерованные каталоги и посмотрите, можете ли вы найти каталог Машины внутри

4) Когда вы найдете " Машины", измените ключ OriginalMachineName на имя сервера, которым вы хотите. Это действительно оригинальное имя машины, когда окна были впервые установлены.

PS: Мой путь был OriginalMachineName > Компьютер \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\Machines

Ответ 6

В моем случае я не мог отказаться от старого имени; Я мог перезапустить MSSQL или виртуальную SERVERPROPERTY('SERVERNAME') хотел, @@SERVERNAME продолжал возвращать старое имя, в то время как любой другой метод (включая SERVERPROPERTY('SERVERNAME')) возвращал новое имя, что вызывало всевозможные проблемы. Оказывается, удаление нового имени и его повторное добавление (и, конечно, перезапуск MSSQL) исправляет эту странную проблему:

sp_dropserver <new_name>; GO
sp_addserver <new_name>, local; GO

Ответ 7

Спасибо за предыдущие ответы, помогли мне исправить мою проблему.

Просто обратите внимание на другие, если вы хотите, чтобы все имя сервера, например, возвращено из @@SERVERNAME, вы можете использовать SELECT SERVERPROPERTY('ServerName');

Ответ 8

Имена базы данных также чувствительны к регистру, если вы запустили sp_dropserver, а затем sp_addserver, как и другие, и не получили изменения с помощью SELECT @@SERVERNAME. Просто проверьте правильность написания имени базы данных.