Если полные копии формируются каждый вечер, то процесс восстановления прост. Достаточно применить команду T-SQL RESTORE DATABASE к последней полной копии, чтобы восстановить данные. По завершении процедуры можно приступать к работе. Например, чтобы восстановить базу данных Northwind, используется программный код

RESTORE DATABASE Northwind
FROM DISK = 'C:BACKUPSNorthwind_Full.bak'
WITH RECOVERY, REPLACE

где C:BACKUPSNorthwind_Full.bak -- путь к самой свежей полной копии базы данных. Помните, что команда RESTORE DATABASE возвращает базу данных в состояние, в котором она была во время резервного копирования; любые последующие действия отменяются. Пользователям Windows Vista также необходимо помнить о режиме Run as Administrator при восстановлении, чтобы иметь полномочия восстановить базу данных.

Если используются резервные копии журнала транзакций, то теряется меньше данных, но процесс восстановления усложняется. В первую очередь необходимо восстановить последнюю полную копию базы данных. Однако поскольку впоследствии восстанавливаются журналы транзакций, необходимо использовать команду RESTORE DATABASE с параметром NORECOVERY:

RESTORE DATABASE Northwind
FROM DISK = 'C:BACKUPSNorthwind_Full.bak'
WITH NORECOVERY, REPLACE

Предложение NORECOVERY указывает программе SQL Server Express, что будут выполнены последующие операции восстановления. SQL Server Express не позволяет использовать восстановленную базу данных, пока не будет выполнено последнее восстановление, которое отмечается предложением RECOVERY.

После того, как будет восстановлена резервная копия базы данных, восстанавливаются копии журнала транзакций, по одной, в порядке их создания. Для всех журналов транзакций, кроме последнего, следует использовать команду RESTORE LOG с параметром NORECOVERY:

RESTORE LOG Northwind
FROM DISK = 'C:BACKUPSNorthwind_Log1.bak'
WITH NORECOVERY

При восстановлении последнего журнала транзакций используйте параметр WITH RECOVERY, чтобы база данных стала пригодной для применения после завершения процесса восстановления:

RESTORE LOG Northwind
FROM DISK = 'C:BACKUPSNorthwind_Log2.bak'
WITH RECOVERY

В этом фрагменте программного кода предполагается, что копирование журналов транзакций базы данных Northwind выполнено в файлы C:BACKUPSNorthwind_Log1.bak и C:BACKUPSNorthwind_Log2.bak. После восстановления журналов транзакций база данных возвращается в состояние, в котором она была во время резервного копирования последнего журнала транзакций.

Рассматривая резервное копирование и восстановление баз данных, важно помнить, что если резервная копия содержит конфиденциальные данные, то необходимо хранить ее в надежном месте. Кроме того, если копия находится на диске, предусмотрите защиту от сбоя диска: сохраните резервную копию на устройстве, отличном от того, на котором хранятся данные и файлы журналов SQL Server Express.

Поделитесь материалом с коллегами и друзьями