Конвертировать старую SQL базу данных в режиме совместимости - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть несколько старых экспортов баз данных (mdf + ldf) с 2006 года. Я не могу прикрепить их к SQL Server 2016, но к SQL Server 2008R2, затем выполнить резервное копирование и восстановить его на SQL Server 2016 При таком подходе файлы базы данных преобразуются.

Мой вопрос таков: вместо использования установки SQL Server 2008R2, которая определена как угроза безопасности для моего клиента, я установил второй SQL Server 2016 экземпляр и переключил его на уровень совместимости 2008, чтобы создать резервную копию, которая, в свою очередь, восстанавливается затем на «реальном» SQL сервере 2016. К сожалению, когда я делаю восстановление, я получаю сообщение об ошибке

«sql ... не может быть обновлено, потому что не выпускаемая версия не поддерживается ...»

Так что, если я правильно понимаю, это означает, что SQL Server 2016 с уровнем совместимости 2008 НЕ совпадает с самой установкой SQL Server 2008. Это верно?

В чем же разница? Влияет ли уровень совместимости только на SQL запросы или на поведение базы данных в целом (резервное копирование, восстановление и т. Д. c.)?

Ответы [ 2 ]

3 голосов
/ 27 февраля 2020

Итак, если я правильно понимаю, это означает, что SQL Server 2016 с уровнем совместимости 2008 НЕ совпадает с SQL самой установкой Server 2008. Это правильно?

Да. Режим совместимости не меняет БД - он лишь меняет поведение ядра базы данных в определенных аспектах, чтобы старые приложения продолжали работать должным образом.

Т.е. старые уровни совместимости не будут принимать определенные новые конструкции SQL и отображать аналогичное поведение запросов в разы.

Вы должны установить 2008R2 - и затем выставить счет клиенту за обновление всего экспорта базы данных;)

1 голос
/ 27 февраля 2020

Нет Уровни совместимости и версия не одинаковы.

База данных, подключенная к экземпляру, использует ту же версию, что и экземпляр. Если эта база данных была восстановлена ​​из более старого экземпляра (скажем, SQL Server 2008), то база данных будет обновлена ​​в течение RESTORE и затем переведена в соответствующий режим совместимости; это означает, что база данных действует так же, как и в более старом экземпляре, однако она все еще обновлена.

Вы можете RESTORE базу данных только до экземпляра, который поддерживает уровень совместимости базы данных. Если ваш файл с 2006 года, то последняя версия, которая может быть, это 2005, которая полностью потеряла поддержку в 2015 году. Последняя версия для поддержки резервного копирования с SQL Server 2005 - SQL Server 2014; вы не можете восстановить резервную копию 2005 года или до SQL Server 2016.

Если ваша резервная копия еще старше, вам придется использовать еще более старую версию SQL Server. Если, например, это резервная копия SQL Server 2000, у вас будет иметь для получения неподдерживаемой SQL Server 2008, RESTORE базы данных, увеличьте уровень совместимости до 90 (2008) , BACKUP база данных, а затем RESTORE в поддерживаемой версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...