2016-09-22 11 views
2

Я собираюсь обновить SQL Server 2012 экземпляра SQL Server 2014.Update sys.servers после переименования хоста сервера SQL

Я клонировал хост для Windows VM и переименовал его из foo-2012 в foo-2014. При перезагрузке экземпляр SQL Server заметил это как обновленное собственное имя, поэтому теперь я могу войти в него как foo-2014. Все хорошо.

К сожалению (одинарный) запись в sys.servers еще foo-2012, что означает, что запуск

SELECT * 
FROM [foo-2012].[barDB].[dbo].tFooBarTable 

терпит неудачу с:

Не удалось найти сервер 'RW-DB-2014' в sys.servers , Убедитесь, что указано правильное имя сервера. Если необходимо, выполните хранимую процедуру sp_addlinkedserver, чтобы добавить сервер в sys.servers.

Изобразительное.

Я запустил EXEC sp_addlinkedserver 'foo-2014', 'SQL Server' и получил запись.

Но теперь новая запись имеет isLinked=1 (тогда как существующая запись имеет isLinked=0).

Documentation указывает, что этот параметр имеет значение (особенно в мое приложение, которое имеет очень сильные мнения о Distr.Trans. :()

Я не могу редактировать/добавлять/изменять sys.servers непосредственно. Любая попытка сделать это дает:

СПЕЦИАЛЬНАЯ обновления системных каталогов не допускаются

я удалить новую запись (EXEC sp_dropserver 'foo-2014'), который преуспевает, и попытаться использовать EXEC sp_addserver 'foo-2014', 'local' которых г. ОКЛАДЫ

Сервер 'Foo-2014' уже существует

Сразу повторный запуск падение затем сообщает

Сервером 'RW-DB-2014' не существует. Используйте sp_helpserver для отображения доступных серверов.

Как исправить это?

+0

Я голосовал, чтобы перенести этот вопрос DBA.SE – TheGameiswar

ответ

1

Вы должны сначала удалить старый сервер foo-2012 так, что у вас нет ни одной строки в sys.servers, а затем сделать оный с 'local':

EXEC sp_dropserver 'foo-2012'; 
GO 
EXEC sp_addserver 'foo-2014', 'local'; 
GO 

Затем вам нужно будет перезапустить службу MSSQLSERVER для того, чтобы изменение вступает в силу в соответствии с документацией для sp_addserver:

Локальное определение вступает в силу только после перезапуска двигателя базы данных.

+0

У нас есть победитель :) Обратите внимание, что вы также должны активно включить ДОСТУП DATA после этого: http://stackoverflow.com/questions/629677/sql- server-not-configure-for-data-access, вы хотите, чтобы ваш ответ был полным, и я приму его. – Brondahl

+0

Также, похоже, нужен перезапуск SQL, хотя это кажется неудивительным. – Brondahl

+0

Конечно, обновится, когда вернусь домой. Я не помню часть доступа к данным, но перезагрузка имеет смысл. –