Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5365 / 282 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00

Лекция 33: Восстановление и воспроизведение базы данных

< Лекция 32 || Лекция 33: 1234 || Лекция 34 >
Использование T-SQL для выполнения операции восстановления

Оператор T-SQL RESTORE действует аналогично оператору BACKUP (см. "Резервное копирование Microsoft SQL Server" ). Подобно оператору BACKUP, сначала оператор RESTORE относительно труден для использования, но некоторые DBA предпочитают включать свои административные процедуры в сценарии SQL для многократного запуска. И, подобно оператору BACKUP, оператор RESTORE предоставляет несколько больше возможностей, чем использование Enterprise Manager.

В этом разделе мы рассмотрим синтаксис оператора 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, чтобы задать для базы данных режим воспроизведения, запустив тем самым процесс воспроизведения.
Необязательные параметры

В табл. 33.1 приводится список дополнительных параметров, которые можно использовать в оператореRESTORE. Как вы увидите, эти параметры обеспечивают высокий уровень гибкости при выполнении операций восстановления. (Один из параметров доступен только для восстановления журнала транзакций, что отмечено в описании.)

Таблица 33.1. Необязательные параметры оператора 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.
Практические советы.
Использование оператора 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

Вы снова увидите статистику, относящуюся к операции восстановления.

< Лекция 32 || Лекция 33: 1234 || Лекция 34 >
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Игорь Соловьев
Игорь Соловьев
Россия, Братск