Восстановление на момент времени: как проверить результат
Соберите непрерывную цепочку, обоснуйте цель STOPAT и проверьте бизнес-данные перед открытием восстановленной базы SQL Server.
Восстановление на момент времени определяет, какие транзакции должны присутствовать в полученной базе. Формулировка «перед удалением» ещё не является рабочей инструкцией. Нужны обоснованное время, непрерывная цепочка копий и бизнес-проверка, отличающая нужное состояние от просто доступной базы. Здесь предполагаются полная модель восстановления и уже настроенное резервное копирование журнала.
Сначала определите бизнес-границу
Предположим, развёртывание удалило неправильные счета в 14:30. Журнал приложения может фиксировать получение запроса, хотя транзакция подтверждается позже. Браузер клиента может использовать другой часовой пояс. Сопоставьте свидетельства базы, идентификаторы запросов и аудит изменений, прежде чем выбирать границу. Сохраняйте исходные данные для расследования вместо немедленной перезаписи повреждённой базы.
Предпочтительно восстановить отдельную базу с другим именем и отдельными физическими файлами. Это сохраняет доказательства и позволяет проверить результат совместно с бизнесом. Потребуется дополнительное место. Исключите выполнение заданий и внешних интеграций, которые могут принять копию за рабочую систему. Восстановление SQL Server не отменяет уже отправленное письмо или платёж во внешнем сервисе.
Зафиксируйте принятую временную шкалу. Время в примере представляет проверенную шкалу сервера, а не автоматически UTC. Неоднозначное время при сезонном переводе часов требует отдельного испытания. Выбор предыдущей целой секунды может исключить и полезные подтверждения. Такие операции необходимо отдельно согласовать и при необходимости повторить.
Соберите и примените цепочку
Начните с полной копии, конечное состояние которой предшествует цели. При необходимости добавьте совместимую разностную, также не пересекающую целевой момент, затем все необходимые копии журнала до включающей нужное время. Важен момент подтверждения: транзакция, начавшаяся раньше, но завершившаяся позже цели, не должна оказаться подтверждённой в результате.
Проверьте реальные заголовки копий и списки файлов. Имена и время завершения сами по себе не доказывают непрерывность. Найдите позиции наборов, все части распределённой копии, ключи шифрования и логические имена для MOVE. Полную копию после ошибки нельзя перемотать назад через STOPAT при применении следующего журнала.
Шаблон предполагает изолированную базу, куда уже загружены правильная полная и необязательная разностная копии с NORECOVERY. Замените пути и повторите действие для каждого нужного журнала по порядку. Целевое время должно оставаться одинаковым на всех шагах.
RESTORE LOG [RecoveryPractice]
FROM DISK=N'D:\Restore\required_log_001.trn'
WITH NORECOVERY, STOPAT='2025-05-12T14:29:59';
-- Repeat for every required log, with the same STOPAT.
-- Only after confirming that the target was reached:
-- RESTORE DATABASE [RecoveryPractice] WITH RECOVERY;
До окончательного завершения восстановления можно применять дополнительные журналы. Сначала убедитесь, что цепочка действительно достигает запрошенного времени. Если цель позже последнего доступного журнала, ищите недостающие носители. Закрытая база сама по себе не доказывает ни успех, ни безвозвратную потерю. В модели bulk-logged минимально журналируемые операции ограничивают выбор момента внутри соответствующей копии журнала.
Подтвердите результат перед открытием
Если исходная база доступна, оцените возможность сохранения хвоста журнала перед любым разрушающим восстановлением. Это может сохранить ещё не скопированные транзакции. Конкретный порядок зависит от состояния базы и выбранной цели. Не используйте WITH REPLACE как импровизированное сокращение во время аварии.
После завершения проверьте целостность, затем бизнес-инварианты: нужные счета присутствуют, ошибочной операции нет, известные предыдущие подтверждения сохранены, суммы согласованы. Перечислите последующие транзакции, намеренно исключённые восстановлением, для контролируемого повтора. Статус ONLINE ничего из перечисленного не доказывает.
Измеряйте отдельно диагностику, поиск носителей, загрузку, проверку и подключение приложения. Отсутствующий пароль способен сорвать норматив даже при быстром восстановлении. Сохраните точную последовательность файлов и проверочные запросы испытания. Второй оператор должен воспроизвести решение без устных подсказок первого. Назначьте также владельца сверки внешних операций: техническая команда не всегда может самостоятельно определить, какой платёж уже исполнен и какой запрос допустимо повторить без дублирования.
Техническая документация: Microsoft Learn: Point-in-time restore · Microsoft Learn: Tail-log backups.