Я сделал резервную копию главной базы данных на машине с SQL Server 2008 версии 10.00.1600. Затем я включил SQL Server в однопользовательском режиме на новой машине с SQL Server 2008 R2 версии 10.50.1600 с помощью следующей команды (используя sqlcmd)
RESTORE DATABASE master FROM DISK = 'D:\master.bak' WITH REPLACE;
Выполнение этой команды вызывает следующую ошибку ...
Msg 3168, уровень 16, состояние 1, сервер U15417546, строка 1 Резервную копию системной базы данных на устройстве D: \ master.bak невозможно восстановить, поскольку она была создана другой версией сервера (10.00.1600), чем эта. сервер (10.50.1600). Msg 3013, уровень 16, состояние 1, сервер U15417546, строка 1 RESTORE DATABASE завершается ненормально.
Выполнение следующей команды на обоих серверах позволило мне убедиться, что номера версий, которые я указал в начале, верны.
SELECT SERVERPROPERTY('Edition') AS Edition,
SERVERPROPERTY('ProductVersion') AS ProductVersion,
SERVERPROPERTY('ProductLevel') AS ProductLevel
Поскольку я выполняю восстановление с более низкой версии на более высокую версию, я полагаю, что восстановление должно быть завершено? Я не смог найти много помощи по этому поводу, поэтому я буду очень признателен за любую информацию.
Вы должны записать те вещи, которые вы хотите от мастера (например, логины). Используйте сторонний инструмент (например, redgate), чтобы упростить задачу, если это необходимо. Как говорили другие плакаты, сделать это с системной базой данных не получится.
Пользовательские базы данных можно обновить до более новых версий, а системные базы данных - нет. Это особенно верно в отношении основной базы данных, которая содержит большую часть информации о конфигурации для сервера базы данных.
В случае несистемной базы данных это, безусловно, так. Я никогда не пробовал этого с системной базой данных, и, возможно, SQL Server предотвратит это. План Б - обновить исходный сервер до R2, а затем восстановить главный сервер на целевом сервере, но вы, вероятно, рассмотрели этот подход.