Как уже упоминалось ранее, необходимо заранее указать SQL Server, какую стратегию резервного копирования вы планируете реализовать. Если используются только полные и разностные резервные копии базы данных, то следует выбрать простую модель восстановления. Если нужно использовать также резервные копии журналов транзакций, то следует выбрать полную модель восстановления ( FULL ) или модель с неполным протоколированием BULK_LOGGED. Выбрав полную модель восстановления, мы сообщаем SQL Server, что необходимо создавать резервные копии журнала транзакций. Чтобы сделать это возможным, SQL Server сохраняет все транзакции в журнале транзакций до тех пор, пока не будет создана резервная копия журнала. При выполнении резервного копирования журнала транзакций, SQL Server выполняет усечение журнала транзакций после того, как резервная копия записана на устройство резервного копирования. В простом режиме журнал транзакций усекается после каждой контрольной точки; это означает, что зафиксированные транзакции (которые уже записаны в файлы данных) удаляются из журнала транзакций. Таким образом, в простом режиме резервные копии журнала транзакций не могут быть созданы.
Чтобы выбрать модель восстановления FULL, можно использовать инструкцию ALTER DATABASE. Следующий код устанавливает режим восстановления базы данных AdventurеWorks в значение FULL.
USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO
В модели полного восстановления высокопроизводительные операции массового копирования (операции, которые изменяют сразу большие количества данных) полностью протоколируются, чтобы сделать возможным резервное копирование журнала транзакций. В некоторых базах данных эта модель восстановления не может использоваться регулярно из-за ограничений на размер журнала транзакций и проблемы с производительностью, которые появляются из-за полного протоколирования высокопроизводительных операций массового копирования. Логично, что, существует модель восстановления с неполным протоколированием. Она позволяет создавать резервные копии журнала транзакций для фиксации и журнала, и результатов любых высокопроизводительных операций массового копирования, но при этом не имеет указанных недостатков. В рамках модели восстановления с неполным протоколированием невозможно восстановить базу данных на определенный момент времени. Кроме того, невозможно выполнять резервное копирование журнала транзакций, когда файл данных повр ежден, а высокопроизводительная операция массового копирования может произойти после того, как резервная копия файла журнала транзакций уже была создана. Это один из основных недостатков резервного копирования журнала транзакций. Следовательно, модель восстановления с неполным протоколированием следует включать только на период выполнения высокопроизводительных операций массового копирования и, по возможности, на непродолжительное время. В остальное время следует использовать полную модель восстановления. Не используйте модель восстановления с неполным протоколированием, если у вас не возникает проблем при использовании только полностью протоколируемых операций. Дополнительную информацию можно найти в Электронной документации по SQL Server 2005, тема "Резервное копирование в модели восстановления с неполным протоколированием".
Чтобы выполнить резервное копирование журнала транзакций, следует выбрать полную модель восстановления, причем после изменения модели восстановления должна быть создана хотя бы одна полная резервная копия базы данных. Резервное копирование журнала транзакций выполняется с помощью инструкции . Как всегда, следует указать имя базы данных и устройство резервного копирования. Типы устройств резервного копирования в этом случае не отличаются от тех, которые используются для создания полных и разностных резервных копий.
Чтобы создать резервную копию журнала AdventurеWorks на физическом устройстве, выполните следующие действия.
FULL ) модель восстановления.AdventurеWorks на физическом устройстве при помощи следующей инструкции SQL:USE master; GO BACKUP LOG AdventureWorks TO DISK='t:\adv_log.bak'
Как и в других инструкциях резервного копирования, процесс дописывает резервную копию на устройство резервного копирования, если в инструкции BACKUP не указан другой вариант. Чтобы перезаписать резервные копии на устройстве, используется инструкция WITH INIT.
USE master; GO BACKUP LOG AdventureWorks TO DISK='t:\adv_log.bak' WITH INIT
В предыдущем разделе мы выполняли различные виды резервного копирования, но процесс восстановления при этом подразумевался только в теории. Теперь мы узнаем, как восстановить базу данных различными способами.
Прежде, чем приступить к восстановлению базы данных, необходимо знать, какую резервную копию выбрать для восстановления. SQL Server хранит историю резервного копирования, в которой есть информация о каждой отдельной резервной копии, созданной для базы данных, в базе данных msdb. Чтобы найти нужную для восстановления резервную копию, можно выполнить запрос к базе данных msdb.
BACKUP, чтобы создать полную и разностную резервные копии базы данных AdventurеWorks.ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; —Создаем полную резервную копию базы данных BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVFULL.BAK" WITH INIT; —Создаем разностную резервную копию BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVDIFF.BAK" WITH INIT,Differential;
AdventurеWorks, выполните следующую инструкцию SELECT:USE msdb GO SELECT backup_start_date,type, physical_device_name,backup_set_id FROM backupset bs inner join backupmediafamily bm ON bs.media_set_id = bm.media_set_id WHERE database_name ='AdventureWorks' ORDER BY backup_start_date desc
Панель результатов, показанная на рисунке, сообщает, что тип самой последней резервной копии - I, что соответствует разностной копии. Как вам известно, чтобы восстановить данные из резервной копии, сначала необходимо восстановить данные из самой последней полной резервной копии. Эту резервную копию мы видим во второй строке, ее тип D указывает на то, что это полная резервная копия.

Используя приведенную выше информацию, можно узнать, какие файлы данных и журналов были включены в резервные копии и в каких папках они первоначально хранились. Следующий запрос получает эту информацию для идентификатора набора 62. Выполняя этот запрос, обязательно измените backup_set_id с 62 на идентификатор полной резервной копии, найденной на предыдущем этапе.
SELECT filegroup_name,logical_name,physical_name FROM msdb..backupfile WHERE backup_set_id = 62 —change to your backup_set_id
msdb может не оказаться необходимой информации. Это может произойти, если база данных msdb была повреждена при аварийной ситуации или если резервное копирование выполнялось на другой системе. В этих случаях можно получить необходимую информацию только непосредственно с устройства резервного копирования. Чтобы получить информацию о резервных копиях, которые находятся на T:\BACKUPS\ADVFULL.BAK ', введите и выполните следующую инструкцию.RESTORE HEADERONLY FROM DISK='T:\BACKUPS\ADVFULL.BAK'
RESTORE FILELISTONLY.RESTORE FILELISTONLY FROM DISK ='T:\BACKUPS\ADVFULL.BAK'
Во многих случаях самый простой способ восстановить базу данных – это воспользоваться интерфейсом SQL Server Management Studio. SQL Server Management Studio использует историю создания резервных копий, которая хранится в базе данных msdb, чтобы показать нам, какой способ восстановления базы данных является наилучшим..
ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; —Создаем полную резервную копию базы данных BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVFULL.BAK" WITH INIT; —Имитируем выполнение транзакции UPDATE AdventureWorks.Person.Contact SET EmailAddress = "kim@testbackup.com" WHERE ContactID=3; —Создаем разностную резервную копию BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVDIFF.BAK" WITH INIT,Differential;
AdventurеWorks не открыто ни одного соединения, поскольку в процессе восстановления соединения с базой данных не разрешены.
(рис 5.1) Диалоговое окно Восстановление базы данныхUSE AdventureWorks; GO SELECT EmailAddress FROM Person.Contact WHERE ContactID =3;
В панели результатов должно отобразиться kim@testbackup.com.
Представьте себе, что вы создали резервную копию, описанную в предыдущем примере. Чтобы восстановить базу данных при помощи T-SQL, используется инструкция RESTORE DATABASE. Синтаксис этой инструкции аналогичен инструкции BACKUP. Необходимо указать имя базы данных и путь к устройству резервного копирования.
AdventurеWorks, ведите и выполните следующую инструкцию RESTORE DATABASE. Как всегда, убедитесь, что при выполнении запросов с базой данных не установлено ни одного соединения.USE MASTER GO RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVFULL.BAK'
SELECT EmailAddress FROM AdventureWorks.Person.Contact WHERE ContactID = 3
В процессе этой процедуры восстанавливаются только данные полной резервной копии. После восстановления база данных автоматически переводится в рабочий режим, возвращаясь к исходным параметрам. Если нужно также применить разностную резервную копию, необходимо сообщить SQL Server о том, что не следует переводить базу данных в рабочий режим до завершения полного восстановления, поскольку это сделает невозможным восстановление данных из разностной резервной копии. Для этого используется параметр NORECOVERY. Параметр NORECOVERY должен присутствовать во всех инструкциях RESTORE, за исключением последней в цикле восстановления. В следующем примере мы воспользуемся параметром NORECOVERY при восстановлении данных из полной и разностной резервных копий, выполненных ранее.
AdventurеWorks с использованием параметра NORECOVERY, ведите и выполните следующую инструкцию RESTORE DATABASE.USE MASTER GO RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVFULL.BAK' WITH NORECOVERY
USE MASTER GO RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVDIFF.BAK'
SELECT EmailAddress FROM AdventureWorks.Person.Contact WHERE ContactID = 3
В полной стратегии мы имеем комбинацию полной резервной копии и резервных копий журнала транзакций. Далее речь пойдет о восстановлении данных из этих резервных копий при помощи инструкций T-SQL.
AdventureWorks выполните
следующий код. Этот код также обновит некоторые данные; данное обстоятельство можно использовать для проверки успешности восстановления.ALTER DATABASE AdventureWorks SET RECOVERY FULL; —Создаем полную резервную копию базы данных BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVFULL.BAK" WITH INIT; —Имитируем выполнение транзакции UPDATE AdventureWorks.Person.Contact SET EmailAddress = "AfterFull@test.com" WHERE ContactID=3; —Создаем резервную копию журнала транзакций BACKUP LOG AdventureWorks TO DISK = "T:\BACKUPS\ADVLOG1.BAK" WITH INIT; —Имитируем выполнение транзакции UPDATE AdventureWorks.Person.Contact SET EmailAddress = "AfterLog@test.com" WHERE ContactID=3;
AdventurеWorks поврежден. Как было рассмотрено выше, несмотря на это, можно создать резервную копию журнала транзакций, чтобы зафиксировать последние записи, которые содержат транзакции, завершенные после создания последней резервной копии журнала транзакций. Для этого следует воспользоваться особым параметром NO_TRUNCATE.—Выполняем резервное копирование последних записей журнала транзакций BACKUP LOG AdventureWorks TO DISK = "T:\BACKUPS\ADVLOG2.BAK" WITH INIT, NO_TRUNCATE;
RESTORE, чтобы сначала выполнить восстановление данных из полной резервной копии, а затем из двух резервных копий журнала транзакций. Как и для разностных резервных копий для всех операций восстановления за исключением последней используется параметр NORECOVERY. Журнал транзакций восстанавливается при помощи инструкции RESTORE LOG.— Переключаемся на базу данных master db USE master GO — Восстанавливаем данные из полной резервной копии RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVFULL.BAK' WITH REPLACE, NORECOVERY; — Восстанавливаем данные из первой резервной копии журнала транзакций RESTORE LOG AdventureWorks FROM DISK = "T:\BACKUPS\ADVLOG1.BAK" WITH NORECOVERY; — Восстанавливаем данные из второй резервной копии журнала транзакций RESTORE LOG AdventureWorks FROM DISK = "T:\BACKUPS\ADVLOG2.BAK";
Параметр REPLACE в инструкции RESTORE DATABASE указывает SQL Server на то, что следует пропустить проверку безопасности и заменить файлы базы данных без дальнейших запросов.
SELECT EmailAddress FROM AdventureWorks.Person.Contact WHERE ContactID = 3
Системные базы данных master, msdb, и model являются ядром установки SQL Server. Без системных баз данных SQL Server не будет функционировать должным образом или, при повреждении базы данных master, вообще не будет работать. Следовательно, крайне важно иметь резервные копии этих баз данных, чтобы быть готовым к возможным сбоям системы. Для системных баз данных обычно используется простая модель, при которой создаются полные резервные копии базы данных по регулярному расписанию. Такая стратегия в этом случае будет эффективной, поскольку информация в этих таблицах изменяется нечасто. Тем не менее, после существенных изменений в системе, например, создания баз данных, имен входа или изменения параметров конфигурации, следует выполнить внеплановое резервное копирование системных баз данных.
Выполнение резервного копирования и восстановления в SQL Server выполняются в рабочем режиме. Следовательно, чтобы можно было восстановить системные базы данных, сервер SQL Server должен быть запущен. Восстановить работоспособность SQL Server можно двумя способами:
После этого SQL Server начинает работать, но в нем отсутствует информация о пользовательских базах данных, именах входа, заданиях, предупреждениях и настройках, которые были в системе до аварийной ситуации. Чтобы исправить эту ситуацию, следует восстановить системные базы данных из резервных копий. Процесс восстановления системных баз данных всегда начинается с восстановления базы данных master. Для восстановления базы данных master используется особая процедура, подробное описание которой приводится ниже.
master, msdb и model.—База данных MASTER BACKUP DATABASE MASTER TO DISK = "T:\BACKUPS\master.bak" WITH INIT —База данных MSDB BACKUP DATABASE MSDB TO DISK = "T:\BACKUPS\msdb.bak" WITH INIT —База данных MODEL BACKUP DATABASE MODEL TO DISK = "T:\BACKUPS\model.bak" WITH INIT

cmd и нажмите кнопку ОК.binn в установочном каталоге SQL Server при помощи следующей команды: В этой команде указан путь, который используется программой установки SQL Server по умолчанию. Введите всю команду одной строкой (здесь перенос выполнен для того, чтобы команда уместилась в границы страницы), а затем нажмите клавишу Enter.C:\Documents and Settings\Administrator>cd "\Program Files\ Microsoft SQL Server\MSSQL.1\MSSQL\binn"
-m,
как показано в следующей команде.
Введите эту команду и нажмите клавишу Enter.C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn>sqlservr –m
sqlcmd -E, чтобы установить соединение с SQL Server.sqlcmd при помощи следующей инструкции T-SQL. При вводе инструкции при переходе на новую строку нажимайте клавишу Enter. После того, как вы введете инструкцию GO и нажмете клавишу Enter, будет выполнена вся инструкция.RESTORE DATABASE master FROM DISK ='T:\BACKUPS\master.bak'; GO
Результат должен выглядеть следующим образом:

msdb и model можно восстановить из резервных копий так же, как и любую другую базу данных. Поскольку в процессе восстановления не должно быть открытых соединений с базами данных, на предыдущем этапе не следует запускать никаких других служб.msdb и model откройте окно New Query (Новый запрос) и выполните следующие инструкции RESTORE DATABASE.—База данных MSDB RESTORE DATABASE MSDB FROM DISK = "T:\BACKUPS\msdb.bak" —База данных MODEL RESTORE DATABASE MODEL FROM DISK = "T:\BACKUPS\model.bak" WITH REPLACE
До сих пор мы выполняли резервное копирование через Query Window (Окно запроса) в SQL Server Management Studio. Безусловно, в производственных системах необходимо создать расписание автоматического резервного копирования без участия пользователя. Для этого можно использовать любую программу автоматического обслуживания. В SQL Server есть встроенный планировщик, представляющий собой компонент службы SQL Server Agent (агент SQL Server). С помощью заданий SQL Server Agent (агента SQL Server) можно настроить пакеты T-SQL, которые будут выполняться по заданному расписанию. Этот компонент предоставляет функции, необходимые для автоматизации стратегии восстановления. Рассмотрим еще один способ составления расписания резервного копирования при помощи мастера. Мастер SQL Maintenance Plan Wizard (мастер планов обслуживания SQL) - это инструмент, которые помогает выполнять стандартные задачи вроде резервного копирования, дефрагментации индексов и проверки целостности базы данных. Мастер планов обслуживания зависит от службы SQL Server Agent (агент SQL Server) ввиду того, что его задания запускаются в нужный момент времени именно этой службой. Следовательно, служба SQL Server Agent (агент SQL Server) должна выполняться непрерывно. Службу SQL Agent Service (агент SQL Server) можно настроить через интерфейс SQL Server Configuration Management (Диспетчер конфигурации SQL Server). Настройте эту службу на автоматический запуск и запускайте при необходимости при помощи следующих действий.
AdventurеWorks. Затем нажмите кнопку Next (Далее).AdventurеWorks и нажмите кнопку OK.Планы обслуживания базы данных можно изменять через интерфейс SQL Server Management Studio. Для этого просто перейдите в Object Explorer (Обозревателе объектов) к папке Maintenance Plan (Планы обслуживания), которая вложена в папку Management (Управление), и щелкните правой кнопкой мыши на плане, который нужно изменить. Из этого меню можно открыть также журнал.
В данной лекции мы познакомились с различными типами резервного копирования, которые позволяет выполнить SQL Server 2005. Комбинируя эти различные типы и создавая расписания, можно настроить такую стратегию резервного копирования, которая будет отвечать требованиям производительности системы и целостности данных. Эти стратегии варьируются от простой модели, которая использует только полные резервные копии базы данных, до полной модели, использующей резервные копии журнала транзакций, что обеспечивает набор функций, позволяющих восстановить данные вплоть до момента воздействия повреждающих факторов.
Не забывайте, что стратегию резервного копирования следует тщательно спланировать, реализовать и протестировать для каждой имеющейся базы данных. Не ждите, пока произойдет реальное повреждение ваших данных, протестируйте стратегию заранее.
| Чтобы | Выполните следующие действия |
|---|---|
| Выбрать модель восстановления | Выполните инструкцию SQLUSE master; GO ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; |
| Проверить модель восстановления | Выполните инструкцию SQLSELECT DATABASEPROPERTYEX
("AdventureWorks",'Recovery')
|
| Извлечь общую информацию резервного копирования | Выполните инструкцию SQLUSE msdb GO SELECT backup_start_date, type, physical_device_name, backup_set_id FROM backupset bs inner join backupmediafamily bm ON bs.media_set_id = bm.media_set_id WHERE database_name ='AdventureWorks' ORDER BY backup_start_date desc |
| Узнать, какие файлы данных и журналы вошли в резервную копию с данным идентификатором | Выполните инструкцию SQLSELECT filegroup_name,logical_name, physical_name FROM msdb..backupfile WHERE backup_set_id = <backup id> |
| Извлечь информацию непосредственно с устройства резервного копирования | Выполните инструкцию SQLRESTORE HEADERONLY FROM DISK= "T:\BACKUPS\ADVFULL.BAK" RESTORE FILELISTONLY FROM DISK= "T:\BACKUPS\ADVFULL.BAK" |
| Восстановить базу данных через интерфейс SQL Server Management Studio Запустить службу SQL Server Agent (Агент SQL Server) | Щелкните правой кнопкой мыши на базе данных в окне Object Explorer (Обозреватель объектов) и выберите команды Task, Restore, Database (Задачи, Восстановить, База данных). Запустите SQL Server Configuration Manager (Диспетчер конфигурации SQL Server). Откройте окно свойств службы SQL Server Agent. Измените значение пункта Start Mode (Режим запуска) на Automatic (Авто), щелкните правой кнопкой мыши на значке службы SQL Server Agent и выберите команду Start (Запустить). |
| Составить расписание резервного копирования | В SQL Server Management Studio откройте папку Management (Управление) в панели Object Explorer (Обозревателя объектов). Выберите Maintenance Plan Wizard (Мастер планов обслуживания) и следуйте рекомендациям мастера. |
Как уже упоминалось ранее, необходимо заранее указать SQL Server, какую стратегию резервного копирования вы планируете реализовать. Если используются только полные и разностные резервные копии базы данных, то следует выбрать простую модель восстановления. Если нужно использовать также резервные копии журналов транзакций, то следует выбрать полную модель восстановления ( FULL ) или модель с неполным протоколированием BULK_LOGGED. Выбрав полную модель восстановления, мы сообщаем SQL Server, что необходимо создавать резервные копии журнала транзакций. Чтобы сделать это возможным, SQL Server сохраняет все транзакции в журнале транзакций до тех пор, пока не будет создана резервная копия журнала. При выполнении резервного копирования журнала транзакций, SQL Server выполняет усечение журнала транзакций после того, как резервная копия записана на устройство резервного копирования. В простом режиме журнал транзакций усекается после каждой контрольной точки; это означает, что зафиксированные транзакции (которые уже записаны в файлы данных) удаляются из журнала транзакций. Таким образом, в простом режиме резервные копии журнала транзакций не могут быть созданы.
Чтобы выбрать модель восстановления FULL, можно использовать инструкцию ALTER DATABASE. Следующий код устанавливает режим восстановления базы данных AdventurеWorks в значение FULL.
USE master; GO ALTER DATABASE AdventureWorks SET RECOVERY FULL; GO
В модели полного восстановления высокопроизводительные операции массового копирования (операции, которые изменяют сразу большие количества данных) полностью протоколируются, чтобы сделать возможным резервное копирование журнала транзакций. В некоторых базах данных эта модель восстановления не может использоваться регулярно из-за ограничений на размер журнала транзакций и проблемы с производительностью, которые появляются из-за полного протоколирования высокопроизводительных операций массового копирования. Логично, что, существует модель восстановления с неполным протоколированием. Она позволяет создавать резервные копии журнала транзакций для фиксации и журнала, и результатов любых высокопроизводительных операций массового копирования, но при этом не имеет указанных недостатков. В рамках модели восстановления с неполным протоколированием невозможно восстановить базу данных на определенный момент времени. Кроме того, невозможно выполнять резервное копирование журнала транзакций, когда файл данных повр ежден, а высокопроизводительная операция массового копирования может произойти после того, как резервная копия файла журнала транзакций уже была создана. Это один из основных недостатков резервного копирования журнала транзакций. Следовательно, модель восстановления с неполным протоколированием следует включать только на период выполнения высокопроизводительных операций массового копирования и, по возможности, на непродолжительное время. В остальное время следует использовать полную модель восстановления. Не используйте модель восстановления с неполным протоколированием, если у вас не возникает проблем при использовании только полностью протоколируемых операций. Дополнительную информацию можно найти в Электронной документации по SQL Server 2005, тема "Резервное копирование в модели восстановления с неполным протоколированием".
Чтобы выполнить резервное копирование журнала транзакций, следует выбрать полную модель восстановления, причем после изменения модели восстановления должна быть создана хотя бы одна полная резервная копия базы данных. Резервное копирование журнала транзакций выполняется с помощью инструкции . Как всегда, следует указать имя базы данных и устройство резервного копирования. Типы устройств резервного копирования в этом случае не отличаются от тех, которые используются для создания полных и разностных резервных копий.
Чтобы создать резервную копию журнала AdventurеWorks на физическом устройстве, выполните следующие действия.
FULL ) модель восстановления.AdventurеWorks на физическом устройстве при помощи следующей инструкции SQL:USE master; GO BACKUP LOG AdventureWorks TO DISK='t:\adv_log.bak'
Как и в других инструкциях резервного копирования, процесс дописывает резервную копию на устройство резервного копирования, если в инструкции BACKUP не указан другой вариант. Чтобы перезаписать резервные копии на устройстве, используется инструкция WITH INIT.
USE master; GO BACKUP LOG AdventureWorks TO DISK='t:\adv_log.bak' WITH INIT
В предыдущем разделе мы выполняли различные виды резервного копирования, но процесс восстановления при этом подразумевался только в теории. Теперь мы узнаем, как восстановить базу данных различными способами.
Прежде, чем приступить к восстановлению базы данных, необходимо знать, какую резервную копию выбрать для восстановления. SQL Server хранит историю резервного копирования, в которой есть информация о каждой отдельной резервной копии, созданной для базы данных, в базе данных msdb. Чтобы найти нужную для восстановления резервную копию, можно выполнить запрос к базе данных msdb.
BACKUP, чтобы создать полную и разностную резервные копии базы данных AdventurеWorks.ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; —Создаем полную резервную копию базы данных BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVFULL.BAK" WITH INIT; —Создаем разностную резервную копию BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVDIFF.BAK" WITH INIT,Differential;
AdventurеWorks, выполните следующую инструкцию SELECT:USE msdb GO SELECT backup_start_date,type, physical_device_name,backup_set_id FROM backupset bs inner join backupmediafamily bm ON bs.media_set_id = bm.media_set_id WHERE database_name ='AdventureWorks' ORDER BY backup_start_date desc
Панель результатов, показанная на рисунке, сообщает, что тип самой последней резервной копии - I, что соответствует разностной копии. Как вам известно, чтобы восстановить данные из резервной копии, сначала необходимо восстановить данные из самой последней полной резервной копии. Эту резервную копию мы видим во второй строке, ее тип D указывает на то, что это полная резервная копия.

Используя приведенную выше информацию, можно узнать, какие файлы данных и журналов были включены в резервные копии и в каких папках они первоначально хранились. Следующий запрос получает эту информацию для идентификатора набора 62. Выполняя этот запрос, обязательно измените backup_set_id с 62 на идентификатор полной резервной копии, найденной на предыдущем этапе.
SELECT filegroup_name,logical_name,physical_name FROM msdb..backupfile WHERE backup_set_id = 62 —change to your backup_set_id
msdb может не оказаться необходимой информации. Это может произойти, если база данных msdb была повреждена при аварийной ситуации или если резервное копирование выполнялось на другой системе. В этих случаях можно получить необходимую информацию только непосредственно с устройства резервного копирования. Чтобы получить информацию о резервных копиях, которые находятся на T:\BACKUPS\ADVFULL.BAK ', введите и выполните следующую инструкцию.RESTORE HEADERONLY FROM DISK='T:\BACKUPS\ADVFULL.BAK'
RESTORE FILELISTONLY.RESTORE FILELISTONLY FROM DISK ='T:\BACKUPS\ADVFULL.BAK'
Во многих случаях самый простой способ восстановить базу данных – это воспользоваться интерфейсом SQL Server Management Studio. SQL Server Management Studio использует историю создания резервных копий, которая хранится в базе данных msdb, чтобы показать нам, какой способ восстановления базы данных является наилучшим..
ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; —Создаем полную резервную копию базы данных BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVFULL.BAK" WITH INIT; —Имитируем выполнение транзакции UPDATE AdventureWorks.Person.Contact SET EmailAddress = "kim@testbackup.com" WHERE ContactID=3; —Создаем разностную резервную копию BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVDIFF.BAK" WITH INIT,Differential;
AdventurеWorks не открыто ни одного соединения, поскольку в процессе восстановления соединения с базой данных не разрешены.
(рис 5.1) Диалоговое окно Восстановление базы данныхUSE AdventureWorks; GO SELECT EmailAddress FROM Person.Contact WHERE ContactID =3;
В панели результатов должно отобразиться kim@testbackup.com.
Представьте себе, что вы создали резервную копию, описанную в предыдущем примере. Чтобы восстановить базу данных при помощи T-SQL, используется инструкция RESTORE DATABASE. Синтаксис этой инструкции аналогичен инструкции BACKUP. Необходимо указать имя базы данных и путь к устройству резервного копирования.
AdventurеWorks, ведите и выполните следующую инструкцию RESTORE DATABASE. Как всегда, убедитесь, что при выполнении запросов с базой данных не установлено ни одного соединения.USE MASTER GO RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVFULL.BAK'
SELECT EmailAddress FROM AdventureWorks.Person.Contact WHERE ContactID = 3
В процессе этой процедуры восстанавливаются только данные полной резервной копии. После восстановления база данных автоматически переводится в рабочий режим, возвращаясь к исходным параметрам. Если нужно также применить разностную резервную копию, необходимо сообщить SQL Server о том, что не следует переводить базу данных в рабочий режим до завершения полного восстановления, поскольку это сделает невозможным восстановление данных из разностной резервной копии. Для этого используется параметр NORECOVERY. Параметр NORECOVERY должен присутствовать во всех инструкциях RESTORE, за исключением последней в цикле восстановления. В следующем примере мы воспользуемся параметром NORECOVERY при восстановлении данных из полной и разностной резервных копий, выполненных ранее.
AdventurеWorks с использованием параметра NORECOVERY, ведите и выполните следующую инструкцию RESTORE DATABASE.USE MASTER GO RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVFULL.BAK' WITH NORECOVERY
USE MASTER GO RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVDIFF.BAK'
SELECT EmailAddress FROM AdventureWorks.Person.Contact WHERE ContactID = 3
В полной стратегии мы имеем комбинацию полной резервной копии и резервных копий журнала транзакций. Далее речь пойдет о восстановлении данных из этих резервных копий при помощи инструкций T-SQL.
AdventureWorks выполните
следующий код. Этот код также обновит некоторые данные; данное обстоятельство можно использовать для проверки успешности восстановления.ALTER DATABASE AdventureWorks SET RECOVERY FULL; —Создаем полную резервную копию базы данных BACKUP DATABASE AdventureWorks TO DISK = "T:\BACKUPS\ADVFULL.BAK" WITH INIT; —Имитируем выполнение транзакции UPDATE AdventureWorks.Person.Contact SET EmailAddress = "AfterFull@test.com" WHERE ContactID=3; —Создаем резервную копию журнала транзакций BACKUP LOG AdventureWorks TO DISK = "T:\BACKUPS\ADVLOG1.BAK" WITH INIT; —Имитируем выполнение транзакции UPDATE AdventureWorks.Person.Contact SET EmailAddress = "AfterLog@test.com" WHERE ContactID=3;
AdventurеWorks поврежден. Как было рассмотрено выше, несмотря на это, можно создать резервную копию журнала транзакций, чтобы зафиксировать последние записи, которые содержат транзакции, завершенные после создания последней резервной копии журнала транзакций. Для этого следует воспользоваться особым параметром NO_TRUNCATE.—Выполняем резервное копирование последних записей журнала транзакций BACKUP LOG AdventureWorks TO DISK = "T:\BACKUPS\ADVLOG2.BAK" WITH INIT, NO_TRUNCATE;
RESTORE, чтобы сначала выполнить восстановление данных из полной резервной копии, а затем из двух резервных копий журнала транзакций. Как и для разностных резервных копий для всех операций восстановления за исключением последней используется параметр NORECOVERY. Журнал транзакций восстанавливается при помощи инструкции RESTORE LOG.— Переключаемся на базу данных master db USE master GO — Восстанавливаем данные из полной резервной копии RESTORE DATABASE AdventureWorks FROM DISK='T:\BACKUPS\ADVFULL.BAK' WITH REPLACE, NORECOVERY; — Восстанавливаем данные из первой резервной копии журнала транзакций RESTORE LOG AdventureWorks FROM DISK = "T:\BACKUPS\ADVLOG1.BAK" WITH NORECOVERY; — Восстанавливаем данные из второй резервной копии журнала транзакций RESTORE LOG AdventureWorks FROM DISK = "T:\BACKUPS\ADVLOG2.BAK";
Параметр REPLACE в инструкции RESTORE DATABASE указывает SQL Server на то, что следует пропустить проверку безопасности и заменить файлы базы данных без дальнейших запросов.
SELECT EmailAddress FROM AdventureWorks.Person.Contact WHERE ContactID = 3
Системные базы данных master, msdb, и model являются ядром установки SQL Server. Без системных баз данных SQL Server не будет функционировать должным образом или, при повреждении базы данных master, вообще не будет работать. Следовательно, крайне важно иметь резервные копии этих баз данных, чтобы быть готовым к возможным сбоям системы. Для системных баз данных обычно используется простая модель, при которой создаются полные резервные копии базы данных по регулярному расписанию. Такая стратегия в этом случае будет эффективной, поскольку информация в этих таблицах изменяется нечасто. Тем не менее, после существенных изменений в системе, например, создания баз данных, имен входа или изменения параметров конфигурации, следует выполнить внеплановое резервное копирование системных баз данных.
Выполнение резервного копирования и восстановления в SQL Server выполняются в рабочем режиме. Следовательно, чтобы можно было восстановить системные базы данных, сервер SQL Server должен быть запущен. Восстановить работоспособность SQL Server можно двумя способами:
После этого SQL Server начинает работать, но в нем отсутствует информация о пользовательских базах данных, именах входа, заданиях, предупреждениях и настройках, которые были в системе до аварийной ситуации. Чтобы исправить эту ситуацию, следует восстановить системные базы данных из резервных копий. Процесс восстановления системных баз данных всегда начинается с восстановления базы данных master. Для восстановления базы данных master используется особая процедура, подробное описание которой приводится ниже.
master, msdb и model.—База данных MASTER BACKUP DATABASE MASTER TO DISK = "T:\BACKUPS\master.bak" WITH INIT —База данных MSDB BACKUP DATABASE MSDB TO DISK = "T:\BACKUPS\msdb.bak" WITH INIT —База данных MODEL BACKUP DATABASE MODEL TO DISK = "T:\BACKUPS\model.bak" WITH INIT

cmd и нажмите кнопку ОК.binn в установочном каталоге SQL Server при помощи следующей команды: В этой команде указан путь, который используется программой установки SQL Server по умолчанию. Введите всю команду одной строкой (здесь перенос выполнен для того, чтобы команда уместилась в границы страницы), а затем нажмите клавишу Enter.C:\Documents and Settings\Administrator>cd "\Program Files\ Microsoft SQL Server\MSSQL.1\MSSQL\binn"
-m,
как показано в следующей команде.
Введите эту команду и нажмите клавишу Enter.C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn>sqlservr –m
sqlcmd -E, чтобы установить соединение с SQL Server.sqlcmd при помощи следующей инструкции T-SQL. При вводе инструкции при переходе на новую строку нажимайте клавишу Enter. После того, как вы введете инструкцию GO и нажмете клавишу Enter, будет выполнена вся инструкция.RESTORE DATABASE master FROM DISK ='T:\BACKUPS\master.bak'; GO
Результат должен выглядеть следующим образом:

msdb и model можно восстановить из резервных копий так же, как и любую другую базу данных. Поскольку в процессе восстановления не должно быть открытых соединений с базами данных, на предыдущем этапе не следует запускать никаких других служб.msdb и model откройте окно New Query (Новый запрос) и выполните следующие инструкции RESTORE DATABASE.—База данных MSDB RESTORE DATABASE MSDB FROM DISK = "T:\BACKUPS\msdb.bak" —База данных MODEL RESTORE DATABASE MODEL FROM DISK = "T:\BACKUPS\model.bak" WITH REPLACE
До сих пор мы выполняли резервное копирование через Query Window (Окно запроса) в SQL Server Management Studio. Безусловно, в производственных системах необходимо создать расписание автоматического резервного копирования без участия пользователя. Для этого можно использовать любую программу автоматического обслуживания. В SQL Server есть встроенный планировщик, представляющий собой компонент службы SQL Server Agent (агент SQL Server). С помощью заданий SQL Server Agent (агента SQL Server) можно настроить пакеты T-SQL, которые будут выполняться по заданному расписанию. Этот компонент предоставляет функции, необходимые для автоматизации стратегии восстановления. Рассмотрим еще один способ составления расписания резервного копирования при помощи мастера. Мастер SQL Maintenance Plan Wizard (мастер планов обслуживания SQL) - это инструмент, которые помогает выполнять стандартные задачи вроде резервного копирования, дефрагментации индексов и проверки целостности базы данных. Мастер планов обслуживания зависит от службы SQL Server Agent (агент SQL Server) ввиду того, что его задания запускаются в нужный момент времени именно этой службой. Следовательно, служба SQL Server Agent (агент SQL Server) должна выполняться непрерывно. Службу SQL Agent Service (агент SQL Server) можно настроить через интерфейс SQL Server Configuration Management (Диспетчер конфигурации SQL Server). Настройте эту службу на автоматический запуск и запускайте при необходимости при помощи следующих действий.
AdventurеWorks. Затем нажмите кнопку Next (Далее).AdventurеWorks и нажмите кнопку OK.Планы обслуживания базы данных можно изменять через интерфейс SQL Server Management Studio. Для этого просто перейдите в Object Explorer (Обозревателе объектов) к папке Maintenance Plan (Планы обслуживания), которая вложена в папку Management (Управление), и щелкните правой кнопкой мыши на плане, который нужно изменить. Из этого меню можно открыть также журнал.
В данной лекции мы познакомились с различными типами резервного копирования, которые позволяет выполнить SQL Server 2005. Комбинируя эти различные типы и создавая расписания, можно настроить такую стратегию резервного копирования, которая будет отвечать требованиям производительности системы и целостности данных. Эти стратегии варьируются от простой модели, которая использует только полные резервные копии базы данных, до полной модели, использующей резервные копии журнала транзакций, что обеспечивает набор функций, позволяющих восстановить данные вплоть до момента воздействия повреждающих факторов.
Не забывайте, что стратегию резервного копирования следует тщательно спланировать, реализовать и протестировать для каждой имеющейся базы данных. Не ждите, пока произойдет реальное повреждение ваших данных, протестируйте стратегию заранее.
| Чтобы | Выполните следующие действия |
|---|---|
| Выбрать модель восстановления | Выполните инструкцию SQLUSE master; GO ALTER DATABASE AdventureWorks SET RECOVERY SIMPLE; |
| Проверить модель восстановления | Выполните инструкцию SQLSELECT DATABASEPROPERTYEX
("AdventureWorks",'Recovery')
|
| Извлечь общую информацию резервного копирования | Выполните инструкцию SQLUSE msdb GO SELECT backup_start_date, type, physical_device_name, backup_set_id FROM backupset bs inner join backupmediafamily bm ON bs.media_set_id = bm.media_set_id WHERE database_name ='AdventureWorks' ORDER BY backup_start_date desc |
| Узнать, какие файлы данных и журналы вошли в резервную копию с данным идентификатором | Выполните инструкцию SQLSELECT filegroup_name,logical_name, physical_name FROM msdb..backupfile WHERE backup_set_id = <backup id> |
| Извлечь информацию непосредственно с устройства резервного копирования | Выполните инструкцию SQLRESTORE HEADERONLY FROM DISK= "T:\BACKUPS\ADVFULL.BAK" RESTORE FILELISTONLY FROM DISK= "T:\BACKUPS\ADVFULL.BAK" |
| Восстановить базу данных через интерфейс SQL Server Management Studio Запустить службу SQL Server Agent (Агент SQL Server) | Щелкните правой кнопкой мыши на базе данных в окне Object Explorer (Обозреватель объектов) и выберите команды Task, Restore, Database (Задачи, Восстановить, База данных). Запустите SQL Server Configuration Manager (Диспетчер конфигурации SQL Server). Откройте окно свойств службы SQL Server Agent. Измените значение пункта Start Mode (Режим запуска) на Automatic (Авто), щелкните правой кнопкой мыши на значке службы SQL Server Agent и выберите команду Start (Запустить). |
| Составить расписание резервного копирования | В SQL Server Management Studio откройте папку Management (Управление) в панели Object Explorer (Обозревателя объектов). Выберите Maintenance Plan Wizard (Мастер планов обслуживания) и следуйте рекомендациям мастера. |
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.