Тот неловкий момент, когда осознаешь что может быть проще, как произвести восстановление из резервной копии базы данных, если инструкцию самолично разбирал сам и все как казалось в шоколаде.

Что было сделано:

  • Развернут SQL Server
  • Создана база
  • Проработан бекап посредством Maintenance Plan так и в ручную
  • Проработаны действия которые нужно сделать, чтобы восстановить из бекапа.

Но вот когда ранее в один прекрасный момент переезда разваливается Linux кластер и я понимаю, что вот вот до прихода руководства и всех сотрудников у меня остаются считанные часы (а я работал всю ночь, время было согласовано). И я начинаю проклинать того, кто зачем-то сервер базы данных засунул вот в этой самый кластер. Что горевать — нужно привести все как было.

Форматирую ранее служившие нодами сервера, ставлю на них ESXi, поднимаю виртуальные системы, разворачиваю программное обеспечение SQL Server на Windows Server 2008 R2.

Открываю инструкцию по восстановлению и настройки сервера под базу данных используемую приложением и вот это самое и… Восстановление из бекапа завершается ошибкой:

Start — All Programs — Microsoft SQL Server 2008 — запускаю оснастку Среда SQL Server Management Studio, авторизуюсь → (local) (SQL Server 10.0.1600 — NEMDOMB\aollo) → Databases — и через правый клик вызываю меню: Restore Database и по инструкции восстанавливаю из резервной копии — и вот она ошибка:

Различие версий при восстановлении из бекапа MSSQL

Оказывается вот что, резервная копия которую я делал ранее была сделана в версии SQL сервера редакции 10.50.1600, а у меня как я после внимательно посмотрел установлена на скорую руку более ранняя: 10.00.1600 — т. е. Не все так просто, как я думал, да и просто я с таким до этого момента никогда не сталкивался.

Поэтому возник встречный вопрос, как узнать перед установкой SQL сервера какую версию ставить?

Путем вдумчивого гугления, какой редакции соответствует версия sql сервера вышел на данную таблицу: (с сайта: http://sqlserverbuilds.blogspot.ru/)

Таблица серверной части и версий

Но это мне на будущее, а вот как по бекапу определить версию — вот что за главный вопрос и возможно ли это или все же нужно просто все соблюдать с точность (хотя наверное да, будет мне урок)?

Создаю новый запрос:

restore headeronly

from disk ='c:\zup2_backup_2015_10_28_054217_1745850.bak';

go

нажимаю «Выполнить» (Execute) и в «Результатах» прокручиваю вывод вправо и наталкиваюсь на вывод столбцов которые как мне кажутся представляют наибольшую ценность:

На заметку: запрос restore headeronly отображает заголовки данных резервной копии.

Информация полученная из файла бекапа bak

  • Расшифровка столбцов:
  • Версия базы
  • Дата создания бекапа
  • Его размер
  • Тип бекапа который был сделан с базы данных
  • Версия SQL сервера вплоть до релиза
  • Имя системы на которой был развернут сервер базы данных

На заметку: более полная расшифровка столбцов представлена на сайте Mikrosoft: https://msdn.microsoft.com/ru-ru/library/ms178536%28v=sql.120%29.aspx

, где по версии DatabaseVersion можно судя по еще одной полезной таблице определить, какая версия серверной части SQL нужна для разворачивания из резервной копии:

Версия базы и соответствие редакции MSSQL Server

У меня DatabaseVersion = 661, а из таблицы получает что мне нужен дистрибутив SQL Server 2008 R2 редакции без сервис пака, т. е. Релиз 10.50.1600. Отлично.

Но вот ставить полностью SQL сервер ради того, чтобы проверить, а тот ли он и заведется ли бекап, как то странно, а потому можно через консольную утилиту составить запрос и проверить:

Через утилиту sqlcmd можно узнать версию бекапа сделанного на какой серверной платформе

C:\Users\aollo>sqlcmd -E -Q "restore headeronly from disk='c:\zup2_backup_2015_

10_28_054217_1745850.bak';"

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

А потому, я для себя уяснил, сделал бекап, в пояснительную инструкцию как делать и восстанавливать следует запись с выделением «Важно», что бекап следует восстанавливать на такую то версия серверной части sql и соответствующего релиза. На этом я прощаюсь, до новых встреч, с уважением автор блога — ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru