Я просто наткнулся на проблему в своем SQL Server 2008 R2. Когда я вызываю @@SERVERNAME
, он возвращает мое имя компьютера OLD, а не текущее. Почему это? И как я могу это исправить? SQL Server каким-то образом запоминает старое имя машины.
SQL Server @@SERVERNAME возвращает старое имя машины?
Ответ 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
Ответ 5
sp_addserver исправит это.....
Ответ 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. Просто проверьте правильность написания имени базы данных.