Поделиться через


Восстановление базы данных до состояния, сохраненного в моментальном снимке

При повреждении данных в базе данных в сети в некоторых случаях вместо восстановления базы данных из резервной копии будет уместно восстановить базу данных из моментального снимка базы данных, соответствующего времени, предшествующему повреждению. Например, с помощью возврата базы данных можно устранить такую серьезную недавнюю ошибку пользователя, как удаление таблицы. Однако все изменения данных, внесенные после создания моментального снимка, будут утеряны.

  • **Перед началом работы выполните следующие действия. **

    Ограничения

    Предварительные требования

    Безопасность

  • Восстановление моментального снимка базы данных из базы данных с помощью Transact-SQL

Перед началом

Ограничения

Возврат не поддерживается в следующих условиях.

  • У базы данных в текущее время должен быть один моментальный снимок, из которого необходимо возвратить состояние базы.

  • В базе данных имеются доступные только для чтения или сжатые файловые группы.

  • Какие-либо файлы находятся вне сети, хотя были в сети на момент создания снимка.

Перед тем как выполнять возврат, нужно учитывать следующие ограничения.

  • Возврат не предназначен для восстановления носителей. . Моментальный снимок базы данных — это неполная копия файлов базы данных, поэтому в случае, если база данных или ее снимок будут повреждены, вероятно, возврат к снимку станет невозможным. Кроме того, даже если возврат возможен, в случае повреждения он вряд ли устранит проблему. Таким образом, создание регулярных резервных копий и тестирование плана восстановления абсолютно необходимы для защиты базы данных. Дополнительные сведения см. в разделе Резервное копирование и восстановление баз данных SQL Server.

    ПримечаниеПримечание

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

  • Исходная база данных-источник перезаписывается базой данных, к которой выполняется возврат, при этом любые изменения, внесенные в базу данных после создания моментального снимка, будут утеряны.

  • Операция возврата также перезаписывает старый файл журнала и перестраивает журнал. Поэтому выполнить повтор (накат) изменений возвращенной базы данных до момента ошибки пользователя будет невозможно. Вследствие этого рекомендуется создать резервную копию журнала перед возвратом базы данных.

    ПримечаниеПримечание

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

  • При возврате разрывается цепочка резервных копий журналов. Следовательно, прежде чем можно будет выполнять резервное копирование журналов возвращенной базы данных, необходимо создать полную резервную копию базы данных или файлов. Рекомендуется создать полную резервную копию базы данных.

  • Во время операции возврата моментальный снимок и база данных-источник будут недоступны. База данных-источник и моментальный снимок помечаются как «Восстанавливается». Если во время операции возврата произойдет ошибка, то при следующем запуске базы данных будет предпринята попытка завершить возврат.

  • Метаданные возвращенной базы данных совпадают с метаданными на момент снимка.

  • Операция восстановления удаляет все полнотекстовые каталоги.

[В начало]

Предварительные требования

Убедитесь, что исходная база данных и моментальный снимок базы данных удовлетворяют следующим предварительным требованиям.

[В начало]

Безопасность

Разрешения

Возвратить базу данных-источник к состоянию на момент создания моментального снимка базы данных может любой пользователь с разрешением RESTORE DATABASE.

[В начало]

Как восстановить базу данных до моментального снимка базы данных (с использованием Transact-SQL)

Восстановление базы данных до состояния, сохраненного в моментальном снимке

ПримечаниеПримечание

Пример этой процедуры см. в подразделе Примеры (Transact-SQL) далее в этом разделе.

  1. Выберите моментальный снимок базы данных, до которого ее необходимо восстановить. Просмотреть список моментальных снимков базы данных можно в среде Среда SQL Server Management Studio (см. раздел Просмотр моментального снимка базы данных (SQL Server)). Также базу данных-источник можно задать с помощью столбца source_database_id представления каталога sys.databases (Transact-SQL).

  2. Удалите другие моментальные снимки.

    Дополнительные сведения об удалении снимков см. в разделе удалить моментальный снимок базы данных (Transact-SQL). Если база данных использует модель полного восстановления, перед тем как выполнять возврат, следует создать резервную копию журнала. Дополнительные сведения см. в разделе Создание резервной копии журнала транзакций (SQL Server) или Создание резервной копии журнала транзакций при повреждении базы данных (SQL Server).

  3. Выполните операцию восстановления.

    Чтобы выполнить операцию восстановления базы данных-источника, необходимо обладать разрешением RESTORE DATABASE. Чтобы восстановить базу данных, необходимо ввести следующую инструкцию Transact-SQL.

    RESTORE DATABASE database_name FROM DATABASE_SNAPSHOT = database_snapshot_name

    Где database_name представляет базу данных-источник, а database_snapshot_name задает имя моментального снимка базы данных, к состоянию на момент создания которого необходимо восстановить базу данных. Обратите внимание, что в данной инструкции необходимо задавать имя моментального снимка, а не устройство резервного копирования.

    Дополнительные сведения см. в разделе RESTORE (Transact-SQL).

    ПримечаниеПримечание

    В процессе выполнения операции восстановления моментальный снимок и база данных-источник являются недоступными. База данных-источник и моментальный снимок помечаются как «Восстанавливаемый». В случае возникновения ошибки в процессе восстановления система попытается продолжить его при следующем запуске базы данных.

  4. В случае смены владельца базы данных после создания ее моментального снимка, возможно, понадобится обновить соответствующую информацию после восстановления.

    ПримечаниеПримечание

    После восстановления в базе данных сохраняются разрешения и настройки (например модель восстановления и сведения о владельце базы данных) моментального снимка базы данных.

  5. Запустите базу данных.

  6. Кроме того, можно создать резервную копию восстанавливаемой базы данных, особенно если в ней используется полная модель восстановления или модель восстановления с неполным протоколированием. Чтобы создать резервную копию базы данных, см. раздел Создание полной резервной копии базы данных (SQL Server).

[В начало]

Примеры (Transact-SQL)

В этом разделе содержатся примеры восстановления базы данных до состояния, соответствующего моментальному снимку.

  • А. Восстановление базы данных AdventureWorks к состоянию моментального снимка

  • Б. Восстановление базы данных Sales к состоянию моментального снимка

А.Восстановление базы данных AdventureWorks к состоянию моментального снимка

В этом примере предполагается наличие единственного моментального снимка базы данных AdventureWorks2012 . Пример, с помощью которого создается моментальный снимок, используемый в данном примере, приведен в разделе создать моментальный снимок базы данных (Transact-SQL).

USE master;
-- Reverting AdventureWorks to AdventureWorks_dbss1800
RESTORE DATABASE AdventureWorks from 
DATABASE_SNAPSHOT = 'AdventureWorks_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

Значок стрелки, используемый со ссылкой «В начало»[В начало]

Связанные задачи

Значок стрелки, используемый со ссылкой «В начало»[В начало]

См. также

Справочник

RESTORE (Transact-SQL)

sys.databases (Transact-SQL)

Основные понятия

Моментальные снимки базы данных (SQL Server)

Зеркальное отображение и моментальные снимки баз данных (SQL Server)