Я случайно удалил одну таблицу, как мне отменить ее. Пожалуйста, предложите это.
Получите это из резервных копий!
Как сказал Джо Стефанелли, инструменты ApexSQL могут помочь. На самом деле есть два инструмента - если вся таблица была удалена - ApexSQL Recover. Если удалены только записи таблицы, могут помочь и ApexSQL Log, и ApexSQL Recover.
Ограничение обоих инструментов в пробной версии заключается в том, что они восстанавливают только 1 транзакцию из 10. Хорошей новостью является то, что ApexSQL Log показывает все записи в сетке даже в пробной версии, поэтому вы можете видеть записи, которые можно восстановить. Ограничение заключается в том, что вы не можете создать сценарий отмены для всех из них, пока не лицензируете инструмент.
Инструменты могут возвращать данные, даже если у вас нет полной или дифференциальной резервной копии базы данных, поскольку они читают файл данных (MDF) (ApexSQL Recover) и журнал транзакций (LDF и trn - онлайн, отсоединение, резервные копии - ApexSQL Log)
4 метода восстановления потерянных таблиц из-за операции DROP Table
Отказ от ответственности: я работаю в ApexSQL инженером службы поддержки
Если у вас нет хорошей резервной копии, вы можете предоставить сторонний инструмент, например Журнал ApexSQL попытка. Я не знаю, каковы ограничения бесплатной пробной версии, но, возможно, стоит попробовать.
Если у вас есть резервные копии, следуйте процедуре, описанной в Как получить определенную таблицу или строки из резервных копий базы данных или резервных копий журнала транзакций в SQL Server:
Сделайте резервную копию текущего журнала транзакций
Создайте резервную копию текущего журнала транзакций с помощью опции NO_TRUNCATE.Восстановить частичную или полную резервную копию базы данных
SQL Server 2000 или SQL Server 2005 Если ваша стратегия резервного копирования включает резервное копирование файловой группы, вы можете выполнить частичное восстановление базы данных в другое место и восстановить только ту часть базы данных, которая содержит таблицу, которую вы хотите получить. См. Следующие ссылки для получения дополнительной информации о том, как восстановить базу данных с другим именем и расположением: Как восстановить файлы в новое место (Transact-SQL)Восстановление резервных копий журнала транзакций с помощью параметра STOPAT
Восстановление резервных копий журнала транзакций до частичного или полного восстановления базы данных и остановка до того момента времени, когда таблица или строки были удалены. Используйте параметр STOPAT команды RESTORE LOG, чтобы остановить восстановление журнала транзакций и восстановить базу данных до того момента, когда таблица была удалена. Видеть Как восстановить на момент времениПолучить данные
После восстановления базы данных вы можете скопировать таблицу или строки обратно в исходную базу данных с помощью INSERT, Bcp (утилита массового копирования) или SELECT INTO. ...DBCC CHECKTABLE
Запустите ссылку DBCC CHECKTABLE Transact-SQL для новой таблицы, чтобы проверить целостность данных.
Я опустил детали, вы можете перейти по ссылке на статью базы знаний для полного освещения темы.
Несколько человек упомянули сторонние инструменты. Единственный, с которым мне лично не повезло с воспроизведением журнала транзакций, это Жаба от Quest. Это не очень дешево, но если важно, то спасает жизнь. У нас были некоторые плохо написанные веб-приложения, которые были атакованы SQL-инъекциями и разрушили некоторые старые БД. Атака на самом деле не была проблемой, но мы хотели увидеть, какой код они выполняли, поэтому возможность считывать T-LOG была удивительно удобной.
У нас есть резервная копия, я уже сделал это. В любом случае мы можем работать с журналом базы данных, чтобы откатить недавнее удаление. - Симхадри
Вам может понадобиться изучить стратегии воспроизведения журнала транзакций.
Еще один полезный метод восстановления данных удаленных таблиц в SQL Server - использование функции fn_dblog ().
use mydatabase
go
SELECT
[Current LSN],
[Transaction ID],
Operation,
Context,
AllocUnitName
FROM
fn_dblog(NULL, NULL)
WHERE
Operation = 'LOP_DELETE_ROWS'
однако метод восстановления данных с помощью функции fn_dblog () слишком длинный, но он может быть полезен для просмотра удаленных записей таблицы.