Как да възстановим база данни на SQL Server към по-ниска версия?

Оригинална статия: 

SQL Server Migration

Проблем

Имате архивни бази от по висока версия SQL Server и поради някаква причина ако Ви се налага да възстановите архива на по стара версия. Наскоро попаднах на такъв сценарий: за възстановяване на база данни на SQL Server 2019 до SQL Server 2008R2. Със опит на възстановяване на архивните файлове на базата данни, се получава следното съобщение за грешка:

- Msg 1813, Level 16, State 2, Line 1
Could not open new database 'DatabaseName'. CREATE DATABASE is aborted.
Msg 948, Level 20, State 1, Line 1
The database 'DatabaseName' cannot be opened because it is version 655. This server supports version 611 and earlier. A downgrade path is not supported.

или подобна грешка.

Това събщение за грешка се генерира, защото SQL Server проверява версията на базата данни при възстановяване и не ви позволява да възстановите база данни от по-нова версия на SQL Server към по-стара версия на SQL Server. Същото е при atach.

В този пост ще разгледаме един подход за понижаване на базата данни от по-висока версия на SQL Server към по-ниска версия на SQL Server. Решението е изпробвано и работи със малък размер на базата.

Решение

Съобщението за грешка в съобщението за проблем възниква, защото файловете на базата данни на SQL Server (*.mdf, *.ndf и *.ldf) и архивите не са обратно съвместими. Това е причината, поради която не можем да възстановим или прикачим база данни, създадена от по-висока версия на SQL Server към по-ниска версия на SQL Server. Има обаче няколко опции, които могат да ни помогнат да понижим базата данни от по-висока версия на SQL Server към по-ниска версия SQL Server.

Тези опции включват:

  • Използвайте съветника за генериране на скриптове в SQL Server Management Studio
  • Използвайте SQL Server Integration Services
  • Създайте персонализирани скриптове и BCP

В този постт ще използваме съветника за генериране на скриптове в SQL Server Management Studio. 

Ето основните стъпки, които трябва да следваме:

  1. Създаване на скрип схемата на базата данни и данните от по-високата версия на SQL Server с помощта на съветника за генериране на скриптове в SSMS.
  2. Свързване с по-ниската версия на SQL Server и стартиране на SQL скриптовете, които бяха генерирани в предишната стъпка.

В следващия раздел ще опиша стъпките за понижаване на база данни на SQL Server 2012 до база данни на SQL Server 2008 R2.

Забележка: За демонстрационни цели ще понижим базата данни TEST_DB, хоствана на SQL Server 2012 (приемрно SRV02\SQLSERVER2012) до SQL Server 2008 R2 (приемрно SRV01\SQLSERVER2008).

Със снимков материал можете да видите от оригиналната статия.

Стъпки за понижаване на база данни на SQL Server с помощта на съветника за генериране на скриптове на SSMS

Етап 1

Да направим скрипт на схемата на базата данни TEST_DB на SQL Server 2012 (SRV02\SQLSERVER2012), като използвате съветника за генериране на скриптове в SSMS.

В Object Explorer се свържете с SRV02\SQLSERVER2012 , щракнете с десния бутон върху базата данни TEST_DB, разгънете Tasks и изберете "Generate Scripts...".

Това стартира съветника: Generate and Publish Scripts. Натиснете Next, за да пропуснете Introduction екрана и продължите към екрана Choose Objects. От този екран изберете: "Script entire database and all database objects" и пак натиснете Next, за да стигнете до: "Set Scripting Options".

От този екран посочете местоположението, където искате да запишете файла със скрипта, и след това щракнете върху бутона Advanced.

В диалоговия прозорец  Advanced Scripting Options изберете:

  • Задайте Script for Server Version на SQL Server 2008 R2 (или версията която Вие искате)
  • Задайте Types of data to script на Schema and Data - тази опция е ключова, защото това е, което генерира данните за таблица
  • Под  "Table/View Options", задайте Script Triggers, Script Indexes и Script Primary Keys на True

След като сте готови, щракнете върху OK, за да затворите диалоговия прозорец Advanced Scripting Options и да се върнете към страницата "Set Scripting Options". Тука вече можете да натисенте Next, за да продължите към страницата Summary съветника.

След като прегледате избора си на страницата Summary, натиснете върху Next, за да генерирате скриптовете.

След като скриптовете са генерирани успешно, изберете бутона Finish, за да затворите съветника за генериране и публикуване на скриптове: Generate and Publish Scripts.

Етап 2

Свържете се с  SQL Server 2008 R2 (SRV01\SQLSERVER2008) и след това изпълнете SQL скриптовете, които се генеририраха в Стъпка 1, за да създадете схемата и данните на базата данни TEST_DB в ниската версия.

В Object Explorer се свържете с SRV01\SQLServer2008 (старата версия на SQL сървъра), след което в SQL Server Management Studio, избрете скрипта, който генерирахме  в Стъпка 1 от: File/Open/File ..., изберете файла и натисенете: Open.

След зареждане на скрипта, задължително направете промени, за да посочите правилното местоположение за данните и регистрационните файлове на базата данни на TEST_DB. След като сте готови, стартирайте скрипта, за да създадете базата данни TEST_DB на инстанция SRV01\SQLServer2008.

При успешно изпълнение обновете /refresh/ папката Database в Object Explorer, за да видите, че базата данни TEST_DB успешно е понижена.

Бележки

Има няколко неща, които трябва да знаете, когато използвате този подход.

  • Това решение създава един  SQL файл, който има скриптовете за създаване на обектите на базата данни, а също и оператори INSERT за данните в таблиците.
  • За големи бази данни SQL файлът може да стане много голям, ако напишете както схемата, така и данните и може да бъде трудно да се зареди в редактор. Освен това може да получите съобщение за грешка, свързано с паметта, от редактора, ако файлът е твърде голям.
  • За големи бази данни, около 1 GB или повече, ако този подход не работи, тогава трябва да разгледате използването на SSIS за мигриране на базата данни или създаване на персонализирани скриптове за скриптове на обектите и BCP на данните за всяка от таблиците. Можете да използвате този съветник за генериране на скриптове, за да генерирате схемата без данните и да използвате SSIS или BCP за експортиране и импортиране на данните.
  • Този подход работи за SQL Server 2005 до SQL Server 2019. Някои от опциите за скриптове може да са малко по-различни в по-новите версии, но процесът остава същият.
  • Преди просто да изпълните скрипта, трябва да прегледате скрипта, за да се уверите, че всичко изглежда правилно, като пътя на файловете на базата данни, опциите на базата данни и т.н.
  • Освен това, ако използвате нова функционалност, която не съществува в по-ниската версия, SQL Server няма да може да създаде обектите и ще трябва да прегледате генерираните скриптове и съответно да актуализирате кода.
  • За много проста база данни този подход трябва да работи доста лесно, но може да се наложи да отделите известно време, за да направите някои модификации на скрипта за по-сложна база данни.

Следващи стъпки

  • За да избегнете проблеми, винаги се уверявайте, че извършвате пълно архивиране на базата данни, преди да надстроите SQL Server и базата данни до по-висока версия на SQL Server. Освен това, не забравяйте да тествате щателно приложението, преди да го пуснете на потребителите.
  • Считайте тази опция за понижаване като последна опция за връщане назад от надстройка, тъй като необходимото време и място за съхранение могат да бъдат много големи.
  • При много голяма база данни се уверете, че имате достатъчно място за съхранение, за да поддържате нуждите от данни.
  • Не забравяйте да проверите броя на редовете и обектите, както и да тествате приложението си, преди да го пуснете в производство.


Comments

No Comments To Display

Add Comment

Имате 3 опита преди временно заключване на формата.