Після того, як підготовка завершена, можна приступати до самого відновленню. Запустити відновлення можна за допомогою графічного інтерфейсу Management Studio (контекстне меню RestoreDatabase для контейнера Databases або контекстне меню Tasks | Restore для контейнера бази даних) або за допомогою команди RESTORE. Як завжди, опишемо можливості, які представляє графічний інтерфейс, і наведемо інформацію про тих параметрах команди RESTORE. яким вони відповідають:
q Destination to restore. Todatabase (Призначення відновлення. В базу даних) - це, звичайно, ім'я відновлюваної бази даних. Зверніть увагу, що замість вибору бази даних зі списку ви можете ввести своє ім'я. В цьому випадку з резервної копії на сервері буде створена нова база даних. У деяких випадках може бути зручно відновити копію існуючої бази даних під іншим ім'ям, а потім при необхідності стару базу даних видалити, а відновлену перейменувати, присвоївши їй стару назву.
Команда на відновлення бази даних у найпростішому варіанті може виглядати так:
RESTORE DATABASE db2 FROM DISK = 'D: \ SQLBackups \ BackupFile1.bak';
При цьому резервна копія цілком могла бути створена для бази даних db1. а не db2;
· Відновлення на мітку транзакції. Зазвичай мітка транзакції застосовується перед виконанням ризикованих операцій (застосування виправлень від розробників, очищення або масове завантаження даних і т. П.). Створити мітку транзакції можна дуже просто:
BEGIN TRAN mark1 WITH MARK;
Для відновлення буде потрібно використовувати параметр WITH STOPATMARK = 'mark1'. щоб зупинитися точно на цій мітці або WITH STOPBEFOREMARK = 'mark1' для зупинки точно перед цією міткою;
RESTORE LOG db1 FROM DISK = 'D: \ SQLBackups \ BackupFile1.bak' WITH STOPATMARK = 'lsn: 120';
q Fromdatabase (З бази даних) - для виявлення резервних копій буде використовуватися історія резервного копіювання з таблиць бази даних m sdb. У списку можна вибрати не тільки поточну базу даних, але і інші бази даних, які є на цьому сервері;
q Fromdevice (З пристрою) - вам буде потрібно вказати місцезнаходження резервної копії явно. Ця можливість використовується в тих ситуаціях, коли вам потрібно відновити базу даних на інший сервер або місцезнаходження резервної копії змінилося. У будь-якому випадку вам буде потрібно вибрати логічний пристрій резервного копіювання, картридж Стриммер або файл на диску. Ще одна можливість (доступна тільки в Enterprise Edition і тільки при повному відновленні бази даних) - використовувати в якості джерела знімок бази даних (databasesnapshot);
q Selectthebackupsetstorestore (Вибрати резервну копію для відновлення) - в цьому списку вам буде потрібно встановити прапорці навпроти тих резервних копій, які ви плануєте відновити. Зверніть увагу, що прапорці можна поставити навпроти декількох резервних копій. В цьому випадку для кожної обраної резервної копії буде виконана окрема команда RESTORE.
Додаткові і дуже важливі параметри відновлення представлені на вкладці Options вікна відновлення бази даних Management Studio:
q Overwritetheexistingdatabase (Перезаписувати існуючу базу даних) - встановлений прапорець дозволяє перезаписати існуючу базу даних. Фактично він скасовує перевірки, які покликані не допустити втрати даних в разі помилкового відновлення. Таких перевірок передбачено три:
· Заборонено відновлювати резервну копію чужої бази даних на сервер, якщо під цим ім'ям на сервері є своя база даних;
· Заборонено перезаписувати файли, які відносяться до баз даних, що знаходяться в автономному режимі (offline), і, крім цього, взагалі будь-які файли, які не належать до SQL Server;
Щоб ці перевірки скасувати, потрібно встановити зазначений прапорець або використовувати параметр WITH REPLACE в команді RESTORE;
q Preservethereplicationsettings (Зберегти настройки реплікації) - зберегти настройки реплікації при відновленні. Відповідає параметру KEEP_REPLICATION команди RESTORE. Зазвичай використовується тільки тоді, коли база даних одночасно бере участь і в реплікації, і в автоматичній доставці журналів (logshipping).
q Prompt before restoring each backup (Виводити запрошення перед кожним відновленням) - виводити запрошення перед відновленням кожної наступної резервної копії з обраного вами списку. Зазвичай цей параметр використовується тільки тоді, коли кожна копія лежить на своєму картриджі Стриммер, і вам потрібно їх міняти. Цей параметр можна налаштувати тільки на графічному екрані Management Studio. оскільки в коді Transact - SQL для відновлення кожної резервної копії вам доведеться використовувати свою власну команду RESTORE;
q Restrictaccesstotherestoreddatabase (Обмежити доступ до відновлюваної базі даних) - після відновлення доступ буде відкритий тільки членам ролі бази даних db_owner і членам серверних ролей dbcreator і sysadmin. Цей параметр зазвичай застосовується в тих випадках, коли після відновлення бази даних вам необхідно провести додаткові перевірки або внести виправлення. Йому відповідає параметр команди RESTORE WITH RESTRICTED_USER;
q Restorethedatabasefilesas (Відновити файли бази даних як) - дуже важливий параметр, який дозволяє визначити новий шлях для відновлюваних файлів баз даних. Без нього не обійтися, наприклад, в тих ситуаціях, коли ви відновлюєте базу даних на інший сервер, на якому конфігурація дисків виглядає по-іншому. Цьому прапорця в команді RESTORE відповідає параметр MOVE. наприклад:
RESTORE DATABASE db1 FROM DISK = 'D: \ SQLbackups \ BackupFile1.bak' WITH MOVE 'db1' TO 'D: \ db1.mdf', MOVE 'db1_log' TO 'D: \ db1_log.mdf';
Тут db1 і db1_log - це логічні назви файлів бази даних і журналу транзакцій відповідно, а 'D: \ db1.mdf' і 'D: \ db1_log.mdf' - це нові місця для файлів, які будуть відновлені з резервної копії;
q Recoverystate (Стан відновлення) - ще один найважливіший параметр, який визначає, чи буде база даних відкрита для користувачів після закінчення відновлення з носія. У вашому розпорядженні три варіанти:
· WITH RECOVERY - відновлення в звичайному режимі. Після закінчення відновлення почнеться процедура RECOVERY. всі незавершені транзакції будуть скасовані, і в підсумку база даних буде відкрита для користувачів. Цей параметр використовується за умовчанням;
· WITH NORECOVERY - після закінчення процесу відновлення з носія процедура RECOVERY не почнеться. Бази даних залишиться в неробочому стані відновлення. Цей параметр використовується тоді, коли після відновлення резервної копії ви хочете відновити додаткові копії, наприклад, після відновлення повної резервної копії відновити резервну копію журналу транзакцій;
· WITH STANDBY - процедура RECOVERY почнеться, але вся інформація про всіх скасованих незавершених транзакцій буде записана в файл скасування (його потрібно буде вказати). В результаті користувачі зможуть звертатися до відновленої базі даних для читання (наприклад, для створення звітів), але в той же час зберігається можливість застосування наступних резервних копій журналів транзакцій. Таке рішення використовується зазвичай тільки при застосуванні автоматичної доставки журналів на резервний сервер (logshipping).
Як і у випадку з командою BACKUP. деякі можливості команди RESTORE доступні тільки з коду Transact - SQL. Про деякі з них (наприклад, про можливість відновлення до мітки транзакції або LSN) вже розказано. Далі представлено ще кілька параметрів, які не можна вибрати за допомогою графічного інтерфейсу:
q CHECKSUM | NOCHECKSUM - дозволяє включити або відключити перевірку контрольних сум при відновленні. За замовчуванням така перевірка проводиться, а в разі виявлення розбіжностей відновлення припиняється і видається повідомлення про помилку;
q CONTINUE_AFTER_ERROR | STOP_ON_ERROR - чи буде зупинено відновлення в разі виявлення помилок в контрольній сумі. За замовчуванням встановлено параметр STOP_ON_ERROR;
q MEDIANAME - дозволяє вказати ім'я носія, з якого проводиться відновлення. Використовується тільки для додаткових перевірок;
q RESTART - дозволяє продовжити операцію відновлення з того моменту, коли вона була перервана (наприклад, необхідно вставити наступний картридж в стриммер);
q REWIND | NOREWIND - виробляти чи після закінчення відновлення перемотування стрічки в картриджі чи ні. За замовчуванням використовується значення REWIND. т. е. виробляти;
q STATS - так само, як і для команди BACKUP. цей параметр визначає частоту появи інформаційних повідомлень. За замовчуванням інформація про хід відновлення виводиться після відновлення приблизно кожних 10% резервної копії;
q UNLOAD | NOUNLOAD - вивантажувати картридж з Стриммер після закінчення відновлення чи ні. За замовчуванням використовується значення UNLOAD. т. е. вивантажувати. UNLOAD включає в себе також і перемотування стрічки на початок, тому разом з параметром REWIND використовуватися не може.