В "Резервное копирование Microsoft SQL Server" вы узнали о том, насколько важно выполнять резервное копирование вашей системы и как создавать резервные копии. В этой лекции мы продолжим тему защиты базы данных, исходя из материала предыдущей лекции. Вы узнаете, как восстанавливать базу данных, как планировать восстановление на случай аварии; мы рассмотрим более подробно, как происходит воспроизведение базы данных. Как вы увидите, тип выполненного резервного копирования влияет на то, как выполняется восстановление. Кроме изучения методов восстановления и воспроизведения базы данных, вы ознакомитесь с понятием доставки журнала транзакций (log shipping). Это новое средство, введенное в Microsoft SQL Server 2000, позволяющее создавать резервную копию вашей базы данных на другом сервере путем использования журнала транзакций исходного сервера.
Как уже говорилось, тип выполненного резервного копирования влияет на характер операции восстановления. В этом разделе вы узнаете, как выполнять восстановление из полной резервной копии, из разностной резервной копии, а также из резервных копий журнала транзакций.
Восстановление из полной резервной копии – это довольно простой процесс: вы просто восстанавливаете файлы резервной копии с помощью SQL Server Enterprise Manager или операторов Transact-SQL (T-SQL). Инструкции по восстановлению данных с помощью этих двух методов приводятся далее в данной лекции. Если вы планируете восстановление из разностных резервных копий после восстановления из полной резервной копии, то не забывайте создавать резервную копию текущего журнала транзакций (см. раздел "Восстановление из резервных копий журнала транзакций" далее в этой лекции), и задавать параметр NORECOVERY, когда выполняете восстановление.
Для восстановления из разностной резервной копии вы должны сначала выполнить восстановление из полной резервной копии и затем – из всех разностных резервных копий, созданных вслед за последней полной резервной копией. Напомним, что разностная резервная копия используется для резервного копирования информации, которая изменилась с момента последнего полного или разностного резервного копирования. Не забудьте использовать параметр NORECOVERY (за исключением случая восстановления самого последнего файла резервной копии, для которого вы будете использовать параметр RECOVERY ). Если у вас выполняется восстановление из резервных копий журналов транзакций в дополнение к разностной резервной копии, то вы должны также выполнить резервное копирование текущего журнала и применять все измененные файлы журнала, как это описано в следующем разделе.
Чтобы выполнить воспроизведение для возврата базы данных к состоянию, в котором она находилась непосредственно перед отказом системы, вы должны сначала восстановить файлы данных из последней полной резервной копии и затем восстановить изменения, внесенные в базу данных после этого резервного копирования. Чтобы восстановить эти изменения, вам нужно восстановить все резервные копии журнала транзакций, созданные до момента отказа.
Чтобы вы не потеряли ни одной из самых последних транзакций, вы должны сначала сохранить текущий журнал. Если вы забудете сохранить текущий журнал, то потеряете последние изменения, записанные в журнал транзакций, поскольку операции восстановления перезаписывают журнал транзакций.
Чтобы использовать журналы транзакций для восстановления базы данных к состоянию, в котором она находилась непосредственно перед моментом отказа, выполните следующие основные шаги, используя методы, которые вы изучили в "Резервное копирование Microsoft SQL Server" .
Если ваша база данных работает в режиме воспроизведения BULK_LOGGED, то вы должны повторно выполнить любые минимально протоколированные в журнале операции, если это восстановление необходимо. К этим операциям относятся SELECT...INTO, BULK COPY, BCP и некоторые операции CREATE INDEX, а также текстовые операции, о которых говорилось в предыдущей лекции. Если это налагает на вас непосильную нагрузку, не задавайте для вашей базы данных режим BULK_LOGGED.