Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопрос по восстановлению определенных страниц  [new]
Raskolnikov
Member

Откуда:
Сообщений: 52
Привет!

Узнал новую, для себя, информацию, но не понимаю один момент. Есть база данных, модель восстановления полная. Делается полный бэкап. После этого, каким-то образом, повреждается в базе какая-то страница. Мы, значит, бэкапим лог, накатываем из бэкапа определенную страницу и потом сверху накатываем только что забэкапленный лог. Профит.

Не пойму я следующего: когда накатывается лог, он накатывается полностью либо оттуда накатываются только изменения по определенной странице? В команде восстановления лога ничего такого нету, т.е. просто накатывается лог. Если из бэкапа базы накатывается только определенная страница, а опосля накатывается полный лог - то можно сделать вывод, что в базе в итоге получится полная ерунда. Но оно в итоге восстанавливается все корректно. Как это происходит?
9 июл 13, 21:54    [14543796]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по восстановлению определенных страниц  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
В полном бэкапе тупо данные. В бэкапе лога изменения.
Восстанавливается страница полностью на момент полного бэкапа и затем сверху все изменения до текущего значения.

Что тут непонятного?
9 июл 13, 22:33    [14543925]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по восстановлению определенных страниц  [new]
Raskolnikov
Member

Откуда:
Сообщений: 52
Mnior, непонятно следующее: если из бэкапа восстанавливается только 1 страница, значит остальные данные не поменялись. Так? Так вот зачем потом накатывать весь лог? Там ведь записи не только касающиеся восстановленной страницы.
10 июл 13, 22:54    [14549539]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по восстановлению определенных страниц  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Не знаю почему вам не отвечают спецы, но всё очень просто.
Вначале ты определяешь цель восстановления - "N страниц", далее просматривается полный бэкап и находится нужная (начальное состояние), далее просматривается весь лог и ищется все изменения с ней связанные и накатываются на них(неё), до последнего, а далее "закрывается" процесс восстановления.

И при этом не важно, что страница 100500 раз полностью менялась и меняла объект-владельца.

И риторический вопрос:
Как можно восстановить правильно данные конкретной страницы, не убедившись что мы нашли всё изменения, не просеяв тщательно весь лог?! При это всё в правильном порядке.
11 июл 13, 02:23    [14549964]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по восстановлению определенных страниц  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3422
Raskolnikov,

Лень искать пруф, но насколько я помню, у каждой страницы прописан LSN ее последнего изменения - что-то типа таймстемпа. Когда идет восстановление, сиквел обновляет в базе только те страницы, для которых встретил в бэкапе версии с более поздними LSN. Причем этот механизм универсальный, для остальных видов восстановления он полностью применим.

В случае же восстановления страницы у вас во всей базе только она одна и будет обновляться из бэкапа - остальные будут иметь более поздние версии.

Очень грубо и на пальцах, но как-то так.
11 июл 13, 04:37    [14550018]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по восстановлению определенных страниц  [new]
Raskolnikov
Member

Откуда:
Сообщений: 52
Mnior, дело в том, что я не понимал как накатывая бэкап журнала сервер понимает, что менять надо только определенную страницу, а остальные не трогать.

Ennor Tiegael, это тот ответ, которого я ждал! Спасибо!

Mnior, Ennor Tiegael, спасибо за ответы!
14 июл 13, 14:14    [14563478]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить