RESTORE (Transact-SQL)

Изменения: 12 декабря 2006 г.

Восстанавливает резервные копии, выполненные при помощи команды BACKUP. Эта команда позволяет выполнить следующие операции:

  • восстановить базу данных из полной резервной копии (полное восстановление);
  • восстановить часть базы данных (частичное восстановление);
  • восстановить в базе данных определенные файлы, файловые группы или страницы (восстановление файлов или страниц);
  • восстановить журнал транзакций в базе данных (восстановление журнала транзакций);
  • вернуть базу данных к моменту времени, на который был выполнен моментальный снимок базы данных.

Дополнительные сведения о резервном копировании и восстановлении баз данных см. в разделе Резервное копирование и восстановление баз данных в SQL Server.

ms186858.note(ru-ru,SQL.90).gifПримечание.
Описания аргументов см. в разделе Аргументы инструкции RESTORE (Transact-SQL).

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

--To restore a complete database from a full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var } 
[ FROM <backup_device> [ ,...n ] ]
[ WITH 
   [ { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] KEEP_REPLICATION ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 
   [ [ , ] MEDIAPASSWORD = { mediapassword |
                    @mediapassword_variable } ] 
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
    [ [ , ] BLOCKSIZE = { blocksize | @blocksize_variable } ] 
    [ [ , ] BUFFERCOUNT = { buffercount | @buffercount_variable } ] 
   [ [ , ]    MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable } ] 
   [ [ , ] ENABLE_BROKER ] 
   [ [ , ] ERROR_BROKER_CONVERSATIONS ] 
   [ [ , ] NEW_BROKER ] 
   [ [ , ] { RECOVERY | NORECOVERY | STANDBY = 
          {standby_file_name | @standby_file_name_var } 
   } ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ] 
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [ = percentage ] ] 
    [ [ , ] { STOPAT = { 'date_time' | @date_time_var } 
    |  STOPATMARK = { 'lsn:lsn_number' }
              [ AFTER 'datetime' ] 
    |  STOPBEFOREMARK = { 'lsn:lsn_number' }
             [ AFTER 'datetime' ]
   } ] 
]
[;]

<backup_device> ::=
{ 
   { logical_backup_device_name |
            @logical_backup_device_name_var }
   | { DISK | TAPE } = { 'physical_backup_device_name' |
              @physical_backup_device_name_var } 
} 

--Restore part of a database (a partial restore):
RESTORE DATABASE { database_name | @database_name_var } 
  <files_or_filegroups> [ ,...n ] 
 [ FROM <backup_device> [ ,...n ] ] 
 [ WITH 
     PARTIAL 
   [ [ , ] { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 
   [ [ , ] MEDIAPASSWORD = { mediapassword |
                      @mediapassword_variable } ] 
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
   [ [ , ] NORECOVERY ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ]
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [=percentage ] ] 
   [ [ , ] { STOPAT = { 'date_time' | @date_time_var } 
    |  STOPATMARK = { 'lsn:lsn_number' }
              [ AFTER 'datetime' ] 
    |  STOPBEFOREMARK = { 'lsn:lsn_number' }
             [ AFTER 'datetime' ] 
   } ] 
]
[;]

<backup_device> ::=
{ 
   { logical_backup_device_name |
            @logical_backup_device_name_var }
   | { DISK | TAPE } = { 'physical_backup_device_name' |
              @physical_backup_device_name_var } 
} 

<files_or_filegroups> ::= 
{ 
   FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var } 
   |
   FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } 
   | 
   READ_WRITE_FILEGROUPS
} 

--To Restore Specific Files, Filegroups, or Pages: 
RESTORE DATABASE { database_name | @database_name_var } 
     <file_or_filegroup_or_pages> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ] 
[ WITH 
   [ { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 

   [ [ , ] MEDIAPASSWORD = { mediapassword |
                      @mediapassword_variable } ]
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
   [ [ , ] NORECOVERY ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ]
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [ =percentage ] ] 
]
[;]

<backup_device> ::=
{ 
   { logical_backup_device_name |
            @logical_backup_device_name_var }
   | { DISK | TAPE } = { 'physical_backup_device_name' |
              @physical_backup_device_name_var } 
} 

<file_or_filegroup_or_pages> ::=
{ 
   FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
   | FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } }
      | PAGE = 'file:page [ ,...n ]'  
} 

--To Restore a Transaction Log:
RESTORE LOG { database_name | @database_name_var } 
     [ <file_or_filegroup_or_pages> [ ,...n ] ]
[ FROM <backup_device> [ ,...n ] ] 
[ WITH 
   [ { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] KEEP_REPLICATION ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 
   [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable }      ]
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
   [ [ , ] { RECOVERY | NORECOVERY | STANDBY = 
          {standby_file_name | @standby_file_name_var } }
   ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ]
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [=percentage ] ] 
   [ [ , ] { STOPAT = { 'date_time' | @date_time_var } 
    |  STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
              [ AFTER 'datetime' ] 
    |  STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
             [ AFTER 'datetime' ] 
   } ] 
]
[;]

<backup_device> ::=
{ 
   { logical_backup_device_name |
            @logical_backup_device_name_var }
   | { DISK | TAPE } = { 'physical_backup_device_name' |
              @physical_backup_device_name_var } 
} 

<file_or_filegroup_or_pages> ::=
{ 
   FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
   | FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } }
      | PAGE = 'file:page [ ,...n ]'  
} 

--To Revert a Database to a Database Snapshot:   
RESTORE DATABASE { database_name | @database_name_var } 
FROM DATABASE_SNAPSHOT = database_snapshot_name 

Аргументы

Описания аргументов см. в разделе Аргументы инструкции RESTORE (Transact-SQL).

Замечания

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

Дополнительные сведения о восстановлении базы данных см. в разделе Основные сведения о восстановлении из резервных копий и по журналам в SQL Server и Реализация сценариев восстановления для баз данных SQL Server.

Операции восстановления между несколькими платформами, даже между процессорами различных типов, могут выполняться, если параметры сортировки базы данных поддерживаются операционной системой.

После возникновения ошибки инструкция RESTORE может быть запущена вновь. Кроме того, можно указать, чтобы, несмотря на ошибки, инструкция RESTORE продолжала работу и восстановила как можно большее количество данных (см. параметр CONTINUE_AFTER_ERROR). Дополнительные сведения см. в разделе Действия при ошибках восстановления SQL Server, вызванных повреждением резервных копий.

Инструкция RESTORE недопустима в явной или неявной транзакции.

Восстановление поврежденной базы данных master выполняется при помощи специальной процедуры. Дополнительные сведения см. в разделе Рекомендации по восстановлению базы данных master из копии.

Резервные копии, созданные на Microsoft SQL Server 2005, не могут быть восстановлены на более ранних версиях SQL Server.

Восстановление базы данных из копии удаляет кэш планов для экземпляра SQL Server. Удаление кэша планов приводит к перекомпиляции всех последующих планов выполнения и может вызвать непредвиденное временное снижение производительности запросов. В SQL Server 2005 с пакетом обновления 2 для каждого удаленного хранилища кэша в кэше планов журнал ошибок SQL Server содержит следующее информационное сообщение: "«SQL Server обнаружил %d экземпляров, сброшенных на диск хранилищ кэша (часть кэша планов) для хранилища кэша "%s" в результате операций по обслуживанию или изменению настройки базы данных». Это сообщение добавляется в журнал каждые пять минут при сбросе кэша в течение этого временного интервала.

Сценарии восстановления

SQL Server 2005 поддерживает различные сценарии восстановления.

Обратная совместимость

Для поддержки обратной совместимости в синтаксисе инструкции RESTORE могут использоваться следующие ключевые слова.

  • Вместо ключевого слова RESTORE может использоваться ключевое слово LOAD.
  • Вместо ключевого слова LOG может использоваться ключевое слово TRANSACTION.
  • Вместо ключевого слова RESTRICTED_USER может использоваться ключевое слово DBO_ONLY.

Базы данных с включенным форматом хранения vardecimal

Резервное копирование и восстановление правильно работает с форматом хранения vardecimal, но компонент Database Engine необходимо обновить как минимум до SQL Server 2005 с пакетом обновления 2. Нельзя восстановить резервную копию сжатой базы данных в распакованную базу данных. Также невозможно восстановить резервную копию сжатой базы данных с пакетом обновления 2 в прежнюю версию SQL Server. Дополнительные сведения о формате хранения vardecimal см. в разделе Хранение десятичных данных в виде значений переменной длины.

Сравнение параметров RECOVERY и NORECOVERY

Откат контролируется инструкцией RESTORE при помощи параметров [ RECOVERY | NORECOVERY ].

  • Параметр NORECOVERY указывает на то, что откат не производится. Это позволяет продолжать накат при помощи следующей инструкции в последовательности.
    В этом случае последовательность восстановления может восстановить другие резервные копии и выполнить их накат.
  • Параметр RECOVERY (параметр по умолчанию) указывает на то, что откат должен быть выполнен после завершения наката для текущей резервной копии.
    Для восстановления базы данных необходимо, чтобы весь набор восстанавливаемых данных (набор данных наката) был согласован с базой данных. Если набор данных наката, необходимый для согласования с базой данных, достаточно велик и указан параметр RECOVERY, компонент Database Engine формирует ошибку.

Повторное восстановление

Отменить результаты восстановления невозможно, однако можно отменить результаты копирования данных и произвести накат для каждого файла по отдельности. Для перезапуска восстановите нужный файл и выполните накат повторно. Например, если случайно было восстановлено слишком много резервных копий журналов и нужная точка остановки восстановления пройдена, нужно перезапустить последовательность.

Последовательность восстановления может быть прервана и перезапущена при восстановлении всего содержимого соответствующих файлов.

Восстановление полнотекстовых данных

В SQL Server 2005 полнотекстовые данные восстанавливаются вместе с другими данными базы данных во время полного восстановления. Операция восстановления рассматривает полнотекстовые каталоги как файлы. С помощью обычного синтаксиса RESTORE DATABASE database_name FROM backup_device полнотекстовые файлы восстанавливаются как часть файлов базы данных.

Инструкция RESTORE может также использоваться для восстановления в разные расположения, для разностного восстановления, восстановления файлов и файловых групп, а также для восстановления файлов и файловых групп полнотекстовых данных. Кроме того, инструкция RESTORE может восстанавливать как полнотекстовые файлы, так и файлы с данными базы данных.

ms186858.note(ru-ru,SQL.90).gifПримечание.
Нельзя восстановить полнотекстовый каталог в корневой каталог.

Дополнительные сведения см. в разделе Резервное копирование и восстановление полнотекстовых каталогов.

Настройка базы данных и восстановление

Во время восстановления большинство параметров базы данных, устанавливаемых при помощи инструкции ALTER DATABASE, сбрасываются в значения, в которых они находились в конце резервного копирования.

ms186858.note(ru-ru,SQL.90).gifПримечание.
В этом состоит отличие от характера действий версий SQL Server до SQL Server 2000.

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

Таблицы журналов резервного копирования и восстановления

SQL Server включает таблицы журналов резервного копирования и восстановления, в которые заносятся данные слежения за резервным копированием и восстановлением для каждого экземпляра сервера. При выполнении восстановления таблицы журнала резервного копирования также изменяются. Сведения об этих таблицах см. в разделе Просмотр сведений о резервных копиях.

RESTORE LOG

Начиная с SQL Server 2005, инструкция RESTORE LOG может включать список файлов, которые могут быть созданы во время наката. Эта возможность используется, если резервная копия журнала содержит журнальные записи, произведенные во время добавления файла в базу данных.

ms186858.note(ru-ru,SQL.90).gifПримечание.
Для базы данных, использующей модель полного восстановления или модель восстановления с неполным протоколированием, SQL Server 2005 в большинстве случаев требует, чтобы перед восстановлением базы данных была создана резервная копия конца журнала. При восстановлении базы данных без предварительного резервного копирования конца журнала возникает ошибка, если только инструкция RESTORE не содержит предложений WITH REPLACE или WITH STOPAT. Дополнительные сведения о резервном копировании конца журнала см. в разделе Резервные копии заключительного фрагмента журнала.

Оперативное восстановление

ms186858.note(ru-ru,SQL.90).gifПримечание.
Оперативное восстановление допускается только в выпуске SQL Server 2005 Enterprise Edition.

Если поддерживается оперативное восстановление и база данных доступна в оперативном режиме, автоматически выполняется оперативное восстановление файлов и страниц. Кроме того, после начального этапа поэтапного восстановления выполняется восстановление вторичной файловой группы.

ms186858.note(ru-ru,SQL.90).gifПримечание.
Оперативное восстановление может включать в себя отложенные транзакции.

Дополнительные сведения см. в разделе Выполнение оперативного восстановления.

Поэтапное восстановление

Поэтапное восстановление (новая возможность SQL Server 2005) расширяет возможности частичного восстановления Microsoft SQL Server 2000. Поэтапное восстановление позволяет восстанавливать файловые группы после начального частичного восстановления первичной и некоторых вторичных файловых групп. Файловые группы, которые не восстанавливаются, помечаются как автономные и будут недоступны. Однако автономные файловые группы могут быть восстановлены после восстановления файлов. Чтобы вся база данных могла быть поэтапно восстановлена в разное время, поэтапное восстановление поддерживает проверки, гарантирующие согласованность базы данных по окончании этого процесса.

ms186858.note(ru-ru,SQL.90).gifПримечание.
В SQL Server 2000 частичное восстановление может быть выполнено только из полной резервной копии базы данных. Это ограничение снято в SQL Server 2005.

Дополнительные сведения см. в разделе Выполнение поэтапных восстановлений.

Восстановление базы данных к моментальному снимку базы данных

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

Изменения базы данных, произведенные после создания моментального снимка, будут потеряны. Метаданные возвращенной базы данных соответствуют метаданным времени создания моментального снимка. Однако при возвращении к моментальному снимку удаляются все полнотекстовые каталоги.

Возвращение из моментального снимка базы данных не предназначено для восстановления носителей. В отличие от обычного резервного набора данных, моментальный снимок базы данных является неполной копией файлов базы данных. При повреждении базы данных или ее моментального снимка восстановление из моментального снимка базы данных, скорее всего, будет невозможным. Более того, даже если оно окажется возможным, восстановление в случае повреждения вряд ли поможет устранить проблему.

Ограничения на возврат

Возврат не поддерживается в следующих условиях.

  • База данных-источник содержит любые файловые группы в режиме только для чтения или сжатые файловые группы.
  • Если какие-либо файлы, работавшие в оперативном режиме во время создания моментального снимка, сейчас работают автономно.
  • Если в настоящий момент существует несколько моментальных снимков базы данных.

Дополнительные сведения см. в разделе Возврат к моментальному снимку базы данных.

Разрешения

Если восстанавливаемая база данных не существует, для выполнения инструкции RESTORE у пользователя должны быть разрешения CREATE DATABASE. Если база данных существует, разрешения на выполнение инструкции RESTORE по умолчанию предоставлены членам фиксированных серверных ролей sysadmin и dbcreator, а также владельцу базы данных (dbo) (для параметра FROM DATABASE_SNAPSHOT база данных всегда существует).

Разрешения на выполнение инструкции RESTORE даются ролям, в которых данные о членстве всегда доступны серверу. Так как членство в роли базы данных может быть проверено только тогда, когда база данных доступна и не повреждена, что не всегда имеет место при выполнении инструкции RESTORE, члены фиксированной роли базы данных db_owner не имеют разрешений RESTORE.

В операции создания резервной копии могут при необходимости задаваться пароли для набора носителей, набора резервных копий или и того, и другого. Если для набора носителей или резервных копий установлен пароль, в инструкции RESTORE необходимо указывать правильные пароли. Эти пароли предотвращают несанкционированные операции восстановления и присоединения резервных наборов данных к носителю при помощи инструментальных средств SQL Server 2005. Однако защищенный паролем носитель может быть переписан инструкцией BACKUP с параметром FORMAT.

ms186858.security(ru-ru,SQL.90).gifПримечание безопасности.
Пароль не обеспечивает надежную защиту. Он предназначен для предотвращения неправильного восстановления при использовании средств SQL Server 2005 авторизованными или неавторизованными пользователями. Он не предотвращает считывание данных резервной копии при помощи других средств или замену пароля. Оптимальным способом защиты резервных копий является хранение лент с резервными копиями в безопасном месте или создание резервных копий на диске в виде файлов, защищенных соответствующими списками управления доступом (ACL). Списки ACL должны располагаться в корневом каталоге, в котором создаются резервные копии.

Примеры

ms186858.note(ru-ru,SQL.90).gifПримечание.
База данных AdventureWorks показана только для иллюстрации. AdventureWorks является одним из образцов баз данных в SQL Server 2005. Adventure Works Cycles — это вымышленная производственная компания, которая используется для демонстрации концепций баз данных и сценариев работы с ними. Дополнительные сведения об этой базе данных см. в разделе Примеры и образцы баз данных.

Во всех примерах предполагается, что выполнено полное резервное копирование базы данных.

Примеры выполнения инструкции RESTORE.

  • А. Восстановление всей базы данных
  • Б. Восстановление полной и разностной резервной копии базы данных
  • В. Восстановление базы данных с использованием синтаксиса RESTART
  • Г. Восстановление базы данных и перемещение файлов
  • Д. Создание копии базы данных с помощью инструкций BACKUP и RESTORE
  • Е. Восстановление на определенный момент времени с помощью предложения STOPAT
  • Ж. Восстановление журнала транзакций до метки
  • З. Восстановление с использованием синтаксиса TAPE
  • И. Восстановление с использованием синтаксиса FILE и FILEGROUP
  • К. Восстановление базы данных из моментального снимка
ms186858.note(ru-ru,SQL.90).gifПримечание.
Дополнительные примеры см. в разделе Примеры последовательностей восстановления для нескольких сценариев восстановления и в разделах руководства по восстановлению, перечисленных в разделе Разделы руководства по созданию резервных копий и восстановлению из них (Transact-SQL).

А. Восстановление всей базы данных

В следующем примере производится восстановление базы данных из полной резервной копии, находящейся на логическом устройстве резервного копирования на магнитной ленте AdventureWorksBackups. Пример создания этого устройства см. в разделе Устройства резервного копирования.

RESTORE DATABASE AdventureWorks 
   FROM AdventureWorksBackups
ms186858.note(ru-ru,SQL.90).gifПримечание.
Для базы данных, использующей модель полного восстановления или модель восстановления с неполным протоколированием, SQL Server 2005 в большинстве случаев требует, чтобы перед восстановлением базы данных была создана резервная копия конца журнала. Дополнительные сведения см. в разделе Резервные копии заключительного фрагмента журнала.

[В начало примеров]

Б. Восстановление полной и разностной резервной копии базы данных

В данном примере производится восстановление полной резервной копии базы данных, за которым следует восстановление из разностной резервной копии с устройства резервного копирования Z:\SQLServerBackups\AdventureWorks.bak, на котором содержатся обе резервные копии. Полная резервная копия базы данных — это шестой резервный набор данных на устройстве (FILE = 6), а разностная резервная копия базы данных — девятый резервный набор данных на устройстве (FILE = 9). База данных будет восстановлена после восстановления разностной резервной копии.

RESTORE DATABASE AdventureWorks
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
   WITH FILE = 6
      NORECOVERY;
RESTORE DATABASE AdventureWorks
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
   WITH FILE = 9
      RECOVERY;

[В начало примеров]

В. Восстановление базы данных с использованием синтаксиса RESTART

В данном примере параметр RESTART используется для перезапуска операции RESTORE, прерванной ошибкой питания на сервере.

-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks 
   FROM AdventureWorksBackups WITH RESTART

[В начало примеров]

Г. Восстановление базы данных и перемещение файлов

В следующем примере производится полное восстановление базы данных и журнала транзакций, после чего восстановленная база данных перемещается в каталог C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewAdvWorks.ldf'
RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH RECOVERY

[В начало примеров]

Д. Создание копии базы данных с помощью инструкций BACKUP и RESTORE

В следующем примере с помощью инструкций BACKUP и RESTORE создается копия базы данных AdventureWorks. Инструкция MOVE восстанавливает файлы данных и журнала в указанные места. Количество и имена восстанавливаемых файлов базы данных можно определить с помощью инструкции RESTORE FILELISTONLY. Новая копия базы данных называется TestDB. Дополнительные сведения см. в разделе RESTORE FILELISTONLY (Transact-SQL).

BACKUP DATABASE AdventureWorks 
   TO AdventureWorksBackups ;

RESTORE FILELISTONLY 
   FROM AdventureWorksBackups ;

RESTORE DATABASE TestDB 
   FROM AdventureWorksBackups 
   WITH MOVE 'AdventureWorks_Data' TO 'C:\MySQLServer\testdb.mdf',
   MOVE 'AdventureWorks_Log' TO 'C:\MySQLServer\testdb.ldf';
GO

[В начало примеров]

Е. Восстановление на определенный момент времени с помощью предложения STOPAT

В следующем примере база данных восстанавливается в состояние на 12:00``15 апреля 2020 г., и демонстрируется операция восстановления, использующая несколько журналов и устройств резервного копирования.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH NORECOVERY;

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH RECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH RECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

[В начало примеров]

Ж. Восстановление журнала транзакций до метки

В следующем примере восстанавливается журнал транзакций до метки в помеченной транзакции ListPriceUpdate.

USE AdventureWorks
GO
BEGIN TRANSACTION ListPriceUpdate
   WITH MARK 'UPDATE Product list prices';
GO

UPDATE Production.Product
   SET ListPrice = ListPrice * 1.10
   WHERE ProductNumber LIKE 'BK-%';
GO

COMMIT TRANSACTION ListPriceUpdate;
GO

-- Time passes. Regular database 
-- and log backups are taken.
-- An error occurs in the database.
USE master
GO

RESTORE DATABASE AdventureWorks
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups 
   WITH FILE = 4,
   RECOVERY, 
   STOPATMARK = 'ListPriceUpdate';

[В начало примеров]

З. Восстановление с использованием синтаксиса TAPE

В следующем примере производится восстановление базы данных из полной резервной копии, находящейся на устройстве резервного копирования TAPE.

RESTORE DATABASE AdventureWorks 
   FROM TAPE = '\\.\tape0'

[В начало примеров]

И. Восстановление с использованием синтаксиса FILE и FILEGROUP

В следующем примере производится восстановление базы данных MyDatabase, содержащей два файла, одну вторичную файловую группу и один журнал транзакций. Эта база данных использует полную модель восстановления.

Резервная копия базы данных представляет собой девятый резервный набор данных в наборе носителей на логическом устройстве резервного копирования с именем MyDatabaseBackups. Затем производится восстановление трех резервных копий журнала из следующих трех резервных наборов данных (10, 11 и 12) на устройстве MyDatabaseBackups с помощью предложения WITH NORECOVERY. База данных будет восстановлена после восстановления последней резервной копии журнала.

ms186858.note(ru-ru,SQL.90).gifПримечание.
Восстановление выполняется как отдельный шаг с целью снижения возможности преждевременного восстановления, до того как будут восстановлены все резервные копии журналов.

Обратите внимание на два типа параметров FILE в инструкции RESTORE DATABASE. Параметры FILE, предшествующие имени устройства резервного копирования, указывают логические имена файлов базы данных, которые будут восстановлены из резервного набора данных, например FILE = 'MyDatabase_data_1'. Этот резервный набор данных не является первой резервной копией базы данных в наборе носителей, поэтому его позиция указывается параметром FILE в предложении WITH: FILE=9.

RESTORE DATABASE MyDatabase
   FILE = 'MyDatabase_data_1',
   FILE = 'MyDatabase_data_2',
   FILEGROUP = 'new_customers'
   FROM MyDatabaseBackups
   WITH 
      FILE = 9,
      NORECOVERY;
GO
-- Restore the log backups.
RESTORE LOG MyDatabase
   FROM MyDatabaseBackups
   WITH FILE = 10, 
      NORECOVERY;
GO
RESTORE LOG MyDatabase
   FROM MyDatabaseBackups
   WITH FILE = 11, 
      NORECOVERY;
GO
RESTORE LOG MyDatabase
   FROM MyDatabaseBackups
   WITH FILE = 12, 
      NORECOVERY;
GO
--Recover the database:
RESTORE DATABASE MyDatabase WITH RECOVERY;
GO

[В начало примеров]

К. Восстановление базы данных из моментального снимка

В следующем примере производится восстановление базы данных к моментальному снимку базы данных. В этом примере предполагается, что в базе данных в настоящее время существует только один моментальный снимок. Пример создания этого моментального снимка базы данных см. в разделе Как создать моментальный снимок базы данных (Transact-SQL).

ms186858.note(ru-ru,SQL.90).gifПримечание.
Возвращение к моментальному снимку удаляет все полнотекстовые каталоги.
USE master  
RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO

Дополнительные сведения см. в разделе Возврат к моментальному снимку базы данных.

[В начало примеров]

См. также

Справочник

BACKUP (Transact-SQL)
RESTORE REWINDONLY (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)

Другие ресурсы

Резервное копирование и восстановление полнотекстовых каталогов
Резервное копирование и восстановление из копий реплицируемых баз данных
Реализация сценариев восстановления для баз данных SQL Server
Наборы носителей, семейства носителей и резервные наборы данных
Основные сведения о восстановлении из резервных копий и по журналам в SQL Server
Просмотр сведений о резервных копиях

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

12 декабря 2006 г.

Добавления
  • В раздел «Синтаксис» добавлены параметры BLOCKSIZE, BUFFERCOUNT и MAXTRANSFERSIZE.
  • Исправлен синтаксис STOPATMARK и STOPBEFOREMARK для предложения RESTORE DATABASE.
  • В раздел «Примечания» добавлен подраздел, посвященный восстановлению SQL Server 2005, а также баз данных выпуска с пакетом обновления 2, в которых поддерживается формат хранения vardecimal.
  • Добавлен подраздел в раздел «Примечания» об очистке кэша планов.
Измененное содержимое
  • Исправлен синтаксис STOPAT, STOPATMARK и STOPBEFOREMARK.

14 апреля 2006 г.

Измененное содержимое
  • Уточнено ограничение моментальных снимков базы данных для автономных файлов.
  • Изменен синтаксис логического имени резервной копии файла с logical_file_name на logical_file_name_in_backup.