Восстановление связанных баз данных, которые содержат помеченную транзакцию
Область применения: 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 = "<mark_name>", чтобы указать, что помеченная транзакция является точкой восстановления.
С помощью предложения 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 до определенного момента времени (модель полного восстановления)
Планирование и выполнение последовательностей восстановления (модель полного восстановления)