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

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

Каждая операция DROP полностью фиксируется в журнал транзакций SQL Server. Благодаря этому мы можем откатить любую операцию и получить БД на определённый момент времени, при условии, что вы используете полную модель восстановления (FULL RECOVERY).

Если мы в явной транзакции выполним удаление таблицы, а затем откатим транзакцию, то объект будет восстановлен. Если выполнить следующий код:

DROP TABLE Customer

SELECT *
FROM Customer

то мы получим сообщение об ошибке Msg 208, Level 16, State 1 т.к. таблица Customer была удалена.

Тем не менее, следующий скрипт:

BEGIN TRAN 
DROP TABLE Customer

ROLLBACK 
SELECT *
FROM Customer

вернёт все записи таблицы Customer т.к. операция удаления будет явно отменена (ROLLBACK).

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

К счастью, ответ НЕТ. И вам на помощь может прийти ApexSQL Recover.

ApexSQL Recover – это инструмент восстановления данных SQL Server, он позволяет выполнить восстановление удалённых данных (DELETE и TRUCATE) и восстановить полностью удалённые объекты (DROP). Кроме того, вы можете в режиме реального времени восстановить большие двоичные данные (BLOB), тем самым это идеальный инструмент для восстановления, если вы используете SharePoint.

Если у вас нет резервной копии, то для восстановления удалённых данных выполните следующие шаги:

  1. Запустите приложение ApexSQL Recover
  2. Выберите опцию Recover lost data due to a DROP operation (восстановление данные потерянных в результате выполнения операции DROP)
  3. На шаге Select the database to recover необходимо:
    • Из выпадающего списка Server выбрать экземпляр SQL Server, где расположена ваша БД
    • Выбрать способ аутентификации (корректно укажите ваш логин и пароль, если вы используете проверку подлинности SQL)
    • В выпадающем списке Database укажите вашу БД, откуда была удалена таблицa

    и нажмите далее (Next).

  4. На шаге Are additional data sources available? (дополнительные источники) укажите настройку No additional transaction logs are available (никаких дополнительных журналов транзакций)

  5. Шаг Select a recovery action позволяет выбрать настройку Save recovery script to file, которая выгрузит, в указанный вами файл, сценарий восстановления на T-SQL.

  6. Нажмите восстановить (Recover).

Таким простым способом вы сможете вернуть удалённые данные без восстановления из резервной копии.

Переводчик: Алексей Князев

November 20, 2015