Восстановление баз данных SQL Server 2005/2008

MS SQL Server поддерживает три различных вида резервных копий – полную (full backup), дифференциальную(differential backup) и резервную копию журнала транзакций (transaction log backup). Первые два вида резервных копий доступны для баз данных в любой модели восстановления, резервная копия журнала транзакций – для баз данных в модели восстановления FULL и BULK-LOGGED (про модели восстановления вы можете прочитать здесь http://msdn.microsoft.com/ru-ru/library/aa196685(v=SQL.80).aspx ).

Расскажу про вариант восстановления из полной резервной копии (он работает для всех моделей восстановления). Здесь все просто – необходимо выполнить T-SQL скрипт:

RESTORE DATABASE [имя_базы_данных]
FROM DISK = 'путь к полной резервной копии'.
WITH REPLACE, RECOVERY, STATS = 10
MOVE 'имя_базы_данных_Data' TO 'путь_к_базе_на_диске\имя_базы_данных_data.mdf',
MOVE 'имя_базы_данных_Log' TO 'путь_к_базе_на_диске\имя_базы_данных_log.ldf'

Параметр REPLACE указывает на то, что если база данных с именем [имя_базы_данных] существует, то мы заменяем ее содержимое содержимым резервной копии. Если вы восстанавливаете базу данных с помощью GUI – нужно указать «Overwrite the existing database» на вкладке «Options». RECOVERY говорит о том, что базу данных необходимо перевести в согласованное состояние и разрешить соединения пользователей. В GUI это соответствует опции «Leave the database ready to use by rolling back uncommitted transactions. Additional transaction logs cannot be restored.». Т.е., SQL Server откатывает все незафиксированные транзакции и позволяет пользователям работать с данными. После того как вы восстановили резервную копию с параметром RECOVERY, к ней нельзя применять дополнительно копии журналов транзакций и дифференциальные копии. Будьте внимательны, этот параметр устанавливается по умолчанию и если вы захотите «накатить» еще одну копию – процесс восстановления придется начать заново.

STATS = 10 отвечает за вывод информации о процессе восстановления. В данном случае, при восстановлении каждых 10 % резервной копии, на вкладке Messages в SSMS будет появляться сообщение. При восстановлении с помощью GUI вы не можете управлять этим параметром – за изменениями можно следить на «графике» в нижнем левом углу.

Последние две строчки нужны, если Вам нужно восстановить базу не в путь по умолчанию. По умолчанию копия восстанавливается в то же самое место откуда она была сделана. Т.е. если изначально все файлы базы данных лежали в каталоге C:\Database, а вы хотите восстановить копию в другое место, то необходимо использовать параметр MOVE. Для использования MOVE вам необходимо знать логические имена файлов – их можно посмотреть с помощью представления sys.database_files. Вот пример использования этого представления:


use [имя_базы_данных]
SELECT name, physical_name FROM sys.database_files

Если база данных осталась в состоянии RESTORING, ее можно привести в работоспособное состояние и без резервных копий:

RESTORE DATABASE [имя_базы_данных]
WITH RECOVERY

После этого база данных «вернется к жизни».

Рекомендовать в Социальных сетях:
 

Комментариев 2 на “Восстановление баз данных SQL Server 2005/2008

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *