Выполнения операции восстановления БД используя T-SQL
Рассмотрим синтаксис оператора RESTORE
и различные параметры этого оператора. Оператор RESTORE имеет две следующие формы.
- RESTORE DATABASE. Восстановление всей базы данных либо файла или группы файлов
- RESTORE LOG. Восстановление журнала транзакций
Как видите, выбор оператора зависит от типа выполняемой вами операции восстановления. Поскольку большинство параметров этих операторов совпадает, мы будет рассматривать все параметры для обоих типов восстановления (база данных и журнал) в одном списке далее.
Оператор RESTORE
Оператор RESTORE для полного восстановления базы данных имеет следующий синтаксис:
RESTORE DATABASE имя_базы_данных
[ FROM устройство_резервного_копирования ]
[ WITH необязательные параметры ]
Для этого оператора обязательными параметрами являются только имя базы данных и местоположение резервной копии.
Оператор восстановления файла или группы файлов имеет следующий синтаксис:
RESTORE DATABASE имя_базы_данных
[FILE = имя_файла ]
[FILEGROUP = имя_группы_файлов ]
[ FROM устройство_резервного_копирования ]
[ WITH необязательные параметры ]
Для этого оператора обязательными параметрами являются только имя базы данных, имя файла или группы файлов и местоположение резервной копии.
Оператор RESTORE для восстановления журнала транзакций имеет следующий синтаксис:
RESTORE LOG имя_базы_данных
[ FROM устройство_резервного_копирования ]
[ WITH необязательные параметры ]
Во всех этих операторах имя_базы_данных
представляет базу данных, для которой будет выполнено восстановление. Устройство_резервного_копирования
– это имя логического устройства резервного копирования или имя физического устройства. Если указано физическое устройство, то имени устройства должен предшествовать тип устройства, т.е. DISK =, TAPE = или PIPE =. Вы можете задать одно или несколько устройств. (Имена нескольких устройств разделяются запятыми.)
Если вы не указываете предложение FROM
, то восстановление не происходит, но все же происходит воспроизведение (если не задан параметр NORECOVERY
). Этот метод можно использовать для установки базы данных в режим воспроизведения без восстановления каких-либо дополнительных данных. Например, вы можете выполнить несколько операций восстановления из разностных резервных копий и затем запустить операцию RESTORE
без предложения FROM
, чтобы задать для базы данных режим воспроизведения, запустив тем самым процесс воспроизведения.
Необязательные параметры
В таблице ниже приводится список дополнительных параметров, которые можно использовать в операторе RESTORE. Как вы увидите, эти параметры обеспечивают высокий уровень гибкости при выполнении операций восстановления. (Один из параметров доступен только для восстановления журнала транзакций, что отмечено в описании.)
Параметр | Описание |
---|---|
RESTRICTED_USER | Задает ограничение доступа к вновь восстановленной базе данных, чтобы разрешать доступ только ролям db_owner, dbcreater и sysadmin |
FILE = номер_файла | Указывает используемый набор резервной копии, если носитель содержит более одного набора. Например, если задать значение 2, то будет использоваться второй набор резервной копии на данном носителе |
PASSWORD = пароль | Указывает пароль для набора сохранения |
MEDIANAME = имя_носителя | Указывает имя носителя |
MEDIAPASSWORD = пароль | Указывает пароль, который был присвоен этому набору носителей |
MOVE 'имя_логического_файла' TO 'имя_файла_ОС' | Изменяет местоположение восстанавливаемого файла, например: MOVE 'Northwind' TO 'D:\data\Northwind.mdf'. Вы можете использовать этот параметр, если выполняете восстановление на новом диске, поскольку старый диск непригоден |
NORECOVERY | RECOVERY |STANDBY = файл_отката | Параметр NORECOVERY указывает, что воспроизведение транзакций (откат или повторное исполнение) не будет выполняться после восстановления. Использование этого параметра необходимо, если вы будете продолжать восстановление с других резервных копий (разностных или журнала транзакций). Используемый по умолчанию параметр RECOVERY указывает, что будет выполнена операция воспроизведения, причем будет выполнен откат всех нефиксированных изменений. Параметр STANDBY указывает, что на случай отмены операции воспроизведения будет создан файл отката |
KEEP_REPLICATION | Указывает, что будут сохранены параметры репликации, если база данных восстанавливается на издателе |
NOUNLOAD | UNLOAD | Параметр NOUNLOAD указывает, что после операции восстановления носитель не будет выгружаться из устройства (например, лента с резервной копией не будет перемотана в начало или извлечена). Параметр UNLOAD (принятый по умолчанию) указывает, что по окончании операции восстановления носитель будет выгружен |
REPLACE | Указывает, что SQL Server будет восстанавливать файлы данных, даже если эти файлы уже существуют. Существующие файлы данных будут удалены и записаны снова. Если вы не задали параметр REPLACE, то SQL Server проверяет, существует ли уже база данных, которую вы указали. Если она существует, то операция восстановления не выполняется. Эта мера предосторожности помогает избежать непреднамеренного восстановления поверх существующей базы данных |
RESTART | Указывает, что SQL Server должен перезапускать операцию восстановления, если она была прервана |
STATS [ = процент ] | Указывает вывод сообщения после выполнения определенного процента операции восстановления. Его полезно использовать, если вы хотите следить за ходом выполнения операций |
PARTIAL | Указывает, что нужно выполнить частичное восстановление |
STOPAT = дата_время | Указывает, что базу данных следует восстановить (только восстановление журнала к состоянию, в котором она находилась на дату, транзакций) указанную значением дата_время |
STOPATMARK = 'метка' | Указывает, что операция восстановления выполняется, пока не встретится указанная метка |
STOPBEFOREMARK = 'метка' | Указывает, что операция восстановления заканчивается непосредственно перед указанной меткой |
Именованные транзакции – новая возможность SQL Server 2000. Эти именованные транзакции, создаваемые с помощью оператора BEGIN
TRANSACTION ... WITH MARK имя_метки
, позволяют вам использовать параметры STOPATMARK
и STOPBEFOREMARK
оператора RESTORE
.
Примеры
В этой врезке мы рассмотрим несколько примеров использования оператора T-SQL RESTORE.
Следующий оператор восстанавливает файлы данных для базы данных Example:
RESTORE DATABASE Example
FROM Backup_Dev_1, Backup_Dev_2
WITH
NORECOVERY,
STATS = 5
GO
Следующий оператор восстанавливает журнал транзакций для базы данных Example:
RESTORE LOG Example
FROM Backup_Dev_3, Backup_Dev_4
WITH
NORECOVERY,
STATS = 5,
UNLOAD
GO
На экран будет выводиться процент выполнения операции, а также результаты восстановления. Будет указано количество восстановленных страниц, сколько времени длится восстановление и какова скорость (Мб/с).
Вы можете также восстановить эту базу данных с помощью следующего оператора:
RESTORE LOG Example
WITH RECOVERY
GO
Вы снова увидите статистику, относящуюся к операции восстановления.
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.