Можно ли восстановить базу данных MS-SQL более старой версии на SQL Server 2017 без ее обновления? - PullRequest
0 голосов
/ 14 февраля 2019

Я успешно выполняю ежедневное восстановление резервной копии из более ранней версии в MS SQL 2017 с использованием T-SQL.

Однако во время восстановления база данных обновляется до текущей версии.

Это проблема, так как я хочу изменить базу данных, а затем сделать резервную копию, которая затем будет перенесена и восстановлена ​​в другой системе, использующей ту же более раннюю версию MS SQL.

Можно ли запустить RESTOREбез обновления базы данных?

Просматривал документацию по T-SQL и не нашел на нее ссылки.

Я использую код T-SQL:

USE master
GO
ALTER DATABASE Polly SET SINGLE_USER
with ROLLBACK IMMEDIATE
GO

RESTORE DATABASE Polly FROM DISK = 'C:\data\Polly.bak';
GO

USE Polly
DELETE FROM SytLog;
GO

ALTER DATABASE Polly SET MULTI_USER
GO

Если у кого-то есть общие улучшения, описанные выше, я рад предложениям.

Когда запускается вышеперечисленное, я получаю: База данных 'Polly', выполняющая этап обновления с версии 782 до версии 801. ... База данных 'Polly'выполнение шага обновления с версии 868 до версии 869.

Не хотелось бы видеть никаких шагов обновления, но только если база данных по-прежнему может использоваться.

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

При выполнении вышеизложенного я получаю: База данных 'Polly', выполняющая этап обновления с версии 782 до версии 801. ... База данных 'Polly', выполняющая этап обновления с версии 868 до версии 869.

Не хотелось бы видеть никаких шагов обновления, но только если база данных еще пригодна для использования.

Это невозможно.Каждая версия SQL Server имеет свою структуру data и log files, которая отличается в зависимости от версии сервера.И если вы restore или attach база данных из файлов базы данных более низкой версии обновляются в одностороннем порядке, чтобы иметь структуру, которая нужна текущей версии SQL Server.

Невозможно не обновить, потому чтотекущая версия сервера нуждается в этой новой структуре для файлов базы данных.

Все предположения относительно compatibility level / read_only property не помогут вообще, текущий сервер никогда не будет работать с файлами, которые не относятся кнеобходимая структура.

В случае базы данных readonly ее файлы будут обновлены, но база данных останется readonly.

Compatibility level не имеет ничего общего с database version (версияфайлов БД) вообще.Он просто сообщает серверу, какую версию query optimizer следует использовать, какое устаревшее syntax можно проанализировать и т. Д.

0 голосов
/ 14 февраля 2019

Нет, это невозможно.Когда база данных присоединена к более новой версии SQL Server, вы не можете переместить ее обратно на более старую.Единственным вариантом в этом случае является экспорт / импорт данных.Если вам нужно изменить базу данных и переместить ее обратно на старый сервер, вам нужно установить сервер с той же старой версией и выполнить там восстановление!

0 голосов
/ 14 февраля 2019

Уровень совместимости важен.Даже если необходимо изменить уровень совместимости базы данных, при определенных условиях невозможно просто восстановить резервную копию.

Восстановление резервной копии базы данных, созданной на SQL Server 2008 R2, до SQL Server 2012экземпляр работает гладко, но если попытаться восстановить резервную копию SQL Server 2000 на SQL Server 2012, вы не сможете сделать это напрямую.

0 голосов
/ 14 февраля 2019

Документация Microsoft гласит:

Если вы восстановите базу данных SQL Server 2005 (9.x) или новее в SQL Server 2017, база данных будет автоматически обновлена.

Хотя я бы попробовал в случае острой необходимости создать базу данных только для чтения и восстановить ее.

Но это разновидность черной магии, которая напрямую не поддерживается продавцом.

...