Как восстановить базу данных до моментального снимка базы данных (Transact-SQL)
Моментальные снимки базы данных не являются избыточным хранилищем данных и поэтому не обеспечивают защиту от ошибок диска и других типов повреждения данных. Однако если в режиме в сети пользователь допустит ошибку в базе данных, то ее можно восстановить до моментального снимка базы данных, который предшествовал этой ошибке.
Важно! |
---|
Создание регулярных резервных копий и тестирование плана восстановления необходимы для защиты базы данных. Если необходимо восстановить базу данных-источник на момент времени, в который был создан моментальный снимок базы данных, реализуйте политику резервного копирования, позволяющую это делать. |
В результате восстановления базы данных ее оригинал удаляется, а на его место записывается восстановленная база данных. Восстановление до моментального снимка удаляет все полнотекстовые каталоги.
Важно! |
---|
Перед тем как выполнить восстановление, необходимо ознакомиться со сведениями в разделе Возврат к моментальному снимку базы данных. |
Восстановление базы данных до состояния, сохраненного в моментальном снимке
Выберите моментальный снимок базы данных, до которого ее необходимо восстановить. Просмотреть список моментальных снимков базы данных можно в среде Среда SQL Server Management Studio (см. раздел Как просмотреть моментальный снимок базы данных (среда SQL Server Management Studio)). Также базу данных-источник можно задать с помощью столбца source_database_id представления каталога sys.databases (Transact-SQL).
Удалите другие моментальные снимки.
Дополнительные сведения об удалении снимков см. в разделе Как удалить моментальный снимок базы данных (Transact-SQL). Если база данных использует модель полного восстановления, перед тем как выполнять возврат, следует создать резервную копию журнала. Дополнительные сведения см. в разделе Как создать резервную копию журнала транзакций (среда SQL Server Management Studio) или Как создать резервную копию журнала транзакций при повреждении базы данных (Transact-SQL).
Выполните операцию восстановления.
Чтобы выполнить операцию восстановления базы данных-источника, необходимо обладать разрешением RESTORE DATABASE. Чтобы восстановить базу данных, необходимо ввести следующую инструкцию Transact-SQL.
RESTORE DATABASE <имя_базы_данных> FROM DATABASE_SNAPSHOT =<имя_моментального_снимка_базы_данных>
Параметр <имя_базы_данных> представляет базу данных-источник, а параметр <имя_моментального_снимка_базы_данных> задает имя моментального снимка базы данных, до которого необходимо восстановить базу данных. Обратите внимание, что в данной инструкции необходимо задавать имя моментального снимка, а не устройство резервного копирования.
Дополнительные сведения см. в разделе RESTORE (Transact-SQL).
Примечание В процессе выполнения операции восстановления моментальный снимок и база данных-источник являются недоступными. База данных-источник и моментальный снимок помечаются как «Восстанавливаемый». В случае возникновения ошибки в процессе восстановления система попытается продолжить его при следующем запуске базы данных.
В случае смены владельца базы данных после создания ее моментального снимка, возможно, понадобится обновить соответствующую информацию после восстановления.
Примечание После восстановления в базе данных сохраняются разрешения и настройки (например модель восстановления и сведения о владельце базы данных) моментального снимка базы данных.
Запустите базу данных.
Кроме того, можно создать резервную копию восстанавливаемой базы данных, особенно если в ней используется полная модель восстановления или модель восстановления с неполным протоколированием. Сведения о резервном копировании базы данных см. в разделе Как создать резервную копию базы данных (среда SQL Server Management Studio) или Как создать полную резервную копию базы данных (Transact-SQL).
Пример
Данный раздел содержит примеры восстановления базы данных до состояния, соответствующего моментальному снимку.
А. Восстановление базы данных AdventureWorks2008R2 до состояния моментального снимка
В этом примере предполагается наличие единственного моментального снимка базы данных База данных AdventureWorks2008R2. Пример, с помощью которого создается моментальный снимок, используемый в данном примере, приведен в разделе Как создать моментальный снимок базы данных (Transact-SQL).
USE master;
-- Reverting AdventureWorks2008R2 to AdventureWorks2008R2_dbss1800
RESTORE DATABASE AdventureWorks2008R2 from
DATABASE_SNAPSHOT = 'AdventureWorks2008R2_dbss1800';
GO
Б. Восстановление базы данных Sales до состояния моментального снимка
В этом примере возврата предполагается наличие двух моментальных снимков базы данных Sales: sales_snapshot0600 и sales_snapshot1200. В примере происходит удаление более раннего моментального снимка, и база данных восстанавливается до состояния более позднего моментального снимка.
Код программы создания образца базы данных и моментальных снимков для данного примера см. в следующих разделах.
Сведения о создании базы данных Sales и моментального снимка sales_snapshot0600 см. в подразделах «Создание баз данных с файловыми группами» и «Создание моментального снимка базы данных» раздела CREATE DATABASE (Transact-SQL).
Сведения о создании моментального снимка sales_snapshot1200 см. в подразделе «Создание моментального снимка базы данных Sales» раздела Как создать моментальный снимок базы данных (Transact-SQL).
--Test to see if sales_snapshot0600 exists and if it
-- does, delete it.
IF EXISTS (SELECT dbid FROM sys.databases
WHERE NAME='sales_snapshot0600')
DROP DATABASE SalesSnapshot0600;
GO
-- Reverting Sales to sales_snapshot1200
USE master;
RESTORE DATABASE Sales FROM DATABASE_SNAPSHOT = 'sales_snapshot1200';
GO
См. также