Если вы случайно удалили 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.
Если у вас нет резервной копии, то для восстановления удалённых данных выполните следующие шаги:
- Запустите приложение ApexSQL Recover
- Выберите опцию Recover lost data due to a DROP operation (восстановление данные потерянных в результате выполнения операции DROP)
- На шаге Select the database to recover необходимо:
- Из выпадающего списка Server выбрать экземпляр SQL Server, где расположена ваша БД
- Выбрать способ аутентификации (корректно укажите ваш логин и пароль, если вы используете проверку подлинности SQL)
- В выпадающем списке Database укажите вашу БД, откуда была удалена таблицa
и нажмите далее (Next).
-
На шаге Are additional data sources available? (дополнительные источники) укажите настройку No additional transaction logs are available (никаких дополнительных журналов транзакций)
-
Шаг Select a recovery action позволяет выбрать настройку Save recovery script to file, которая выгрузит, в указанный вами файл, сценарий восстановления на T-SQL.
- Нажмите восстановить (Recover).
Таким простым способом вы сможете вернуть удалённые данные без восстановления из резервной копии.
Переводчик: Алексей Князев
November 20, 2015