Восстановление баз данных 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
После этого база данных «вернется к жизни».
Точно) Спасибо)
Спасибо, пригодилось. RESOTRE в начале статьи поправьте 🙂