Поделиться через


Восстановление до помеченной транзакции

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

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

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

Перед вставкой именованных меток в журнал транзакций следует учесть следующее.

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

  • После фиксации помеченной транзакции в таблицу logmarkhistory базы данных msdb вставляется строка.

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

ПримечаниеПримечание

Сведения о том, как пометить транзакции, см. в разделе Использование помеченных транзакций (модель полного восстановления).

Синтаксис языка Transact-SQL для вставки именованных меток в журнал транзакций

Чтобы вставлять метки в журналы транзакций, используйте инструкцию BEGIN TRANSACTION и предложение WITH MARK [описание]. Имя метки совпадает с именем транзакции. Необязательное описание представляет собой текстовое описание, а не имя метки. Например, именем транзакции и метки, которые созданы следующей инструкцией BEGIN TRANSACTION, будет Tx1.

BEGIN TRANSACTION Tx1 WITH MARK 'not the mark name, just a description'  

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

Дополнительные сведения о вставке метки в транзакцию, которая охватывает несколько баз данных, см. в разделе Использование помеченных транзакций (модель полного восстановления).

Синтаксис языка Transact-SQL для восстановления до метки

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

  • Используйте предложение WITH STOPATMARK = '<mark_name>', чтобы указать, что помеченная транзакция представляет собой точку восстановления.

    С помощью предложения STOPATMARK выполняется накат к метке, при этом помеченная транзакция включается в накат.

  • Используйте предложение WITH STOPBEFOREMARK = '<mark_name>', чтобы указать, что запись журнала непосредственно перед меткой представляет собой точку восстановления.

    С помощью предложения STOPBEFOREMARK выполняется накат к метке, при этом помеченная транзакция не включается в накат.

В обоих вариантах, с предложением STOPATMARK и с предложением STOPBEFOREMARK, поддерживается необязательное предложение AFTER datetime. При использовании datetime уникальность имен меток необязательна.

Если предложение AFTER datetime опущено, накат останавливается на первой метке с указанным именем. Если предложение AFTER datetime указано, накат останавливается на первой метке с указанным именем точно в datetime или сразу после.

ПримечаниеПримечание

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

Восстановление до помеченной транзакции

Как восстановить базу данных до помеченной транзакции (среда SQL Server Management Studio)

RESTORE (Transact-SQL)

Подготовка резервных копий журнала

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

  1. Использование модели полного восстановления для обеих баз данных.

  2. Создание полной резервной копии каждой базы данных.

    Отдельное или одновременное резервное копирование баз данных.

  3. Перед созданием резервной копии журнала транзакций необходимо отметить транзакцию, выполняющуюся во всех базах данных. Дополнительные сведения о создании помеченных транзакций см. в разделе Использование помеченных транзакций (модель полного восстановления).

  4. Резервное копирование журнала транзакции в каждой базе данных.

Восстановление базы данных до помеченной транзакции

Восстановление резервной копии

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

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

  3. Идентифицируйте недавно помеченные транзакции, доступные во всех резервных копиях журнала транзакций. Данные сведения хранятся в таблице logmarkhistory в базе данных msdb на каждом сервере.

  4. Идентифицируйте резервные копии журналов для всех связанных баз данных, содержащих данную отметку.

  5. Восстановите каждую резервную копию журнала, остановившись на помеченной транзакции.

  6. Восстановите каждую базу данных.