Восстановление связанных баз данных, которые содержат помеченную транзакцию
Область применения:SQL Server
Этот раздел относится только к базам данных, содержащим помеченные транзакции и использующим полную модель восстановления или модель восстановления с неполным протоколированием.
Сведения о требованиях к восстановлению в определенной точке восстановления см. в статье "Восстановление базы данных SQL Server до точки во времени" (модель полного восстановления).
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 = ">", чтобы указать, что помеченная транзакция является точкой восстановления.
STOPATMARK перемещается к метке, включая помеченную транзакцию в накат.
Используйте предложение WITH STOPBEFOREMARK = '<mark_name>', чтобы указать, что запись журнала, находящаяся непосредственно перед меткой, является точкой восстановления.
Предложение STOPBEFOREMARK продвигается вперед к метке и исключает помеченную транзакцию из продвижения вперед.
Обе опции, STOPATMARK и STOPBEFOREMARK, поддерживают необязательное условие AFTER datetime. При использовании datetime нет необходимости в уникальности названий.
Если After datetime опущено, перемотка останавливается на первой точке с таким именем. Если указано AFTER datetime, накат останавливается на первой метке с заданным именем, точно в datetime или сразу после.
Примечание.
Как и во всех случаях операций восстановления в определенный момент времени, восстановление до метки запрещено, когда в базе данных выполняются операции массового протоколирования.
Восстановление помеченной транзакции
Восстановление базы данных к отмеченной транзакции (в SQL Server Management Studio)
Подготовка резервных копий журнала
Например, подходящей стратегией резервного копирования для этих связанных баз данных будет следующая.
Использование модели полного восстановления для обеих баз данных.
Создание полной резервной копии каждой базы данных.
Отдельное или одновременное резервное копирование баз данных.
Перед созданием резервной копии журнала транзакций необходимо отметить транзакцию, выполняющуюся во всех базах данных. Сведения о создании помеченных транзакций см. в разделе "Использование помеченных транзакций для последовательного восстановления связанных баз данных" (модель полного восстановления).
Резервное копирование журнала транзакции в каждой базе данных.
Восстановление базы данных до помеченной транзакции
Восстановление резервной копии
Если возможно, создайте заключительные журнальные резервные копии неповрежденных баз данных.
Восстановите последнюю полную резервную копию каждой базы данных.
Идентифицируйте недавно помеченные транзакции, доступные во всех резервных копиях журнала транзакций. Данные сведения хранятся в таблице logmarkhistory в базе данных msdb на каждом сервере.
Идентифицируйте резервные копии журналов для всех связанных баз данных, содержащих данную отметку.
Восстановите каждую резервную копию журнала, остановившись на помеченной транзакции.
Восстановите каждую базу данных.
См. также
BEGIN TRANSACTION (Transact-SQL)
RESTORE (Transact-SQL)
Применение резервных копий журналов транзакций (SQL Server)
Согласованное восстановление связанных баз данных с помощью помеченных транзакций (модель полного восстановления)
Обзор процессов восстановления (SQL Server)
Восстановление базы данных SQL Server до определенного момента времени (модель полного восстановления)
Планирование и выполнение последовательностей восстановления (модель полного восстановления)