Как отменить операцию удаления в SQL Server 2005?
-
03-07-2019 - |
Вопрос
В нашей тестовой базе данных внезапно пропали строки.Мы хотим их вернуть.
Есть ли способ проанализировать все, что произошло с базой данных сегодня?Каждый оператор SQL?Я предполагаю, что подобные данные есть в журнале транзакций, но не знаю, как их просмотреть.
Есть ли способ отменить операции удаления?
КСТАТИ:Да, у нас есть резервная копия, но мы бы предпочли также найти причину удаления...
Решение
Вы можете сделать это с помощью некоторых Красные воротаинструменты, но это стоит денег.Взгляни на Спасение журнала SQL.
В противном случае у меня возникнет соблазн сделать восстановление.
Другие советы
[поздний ответ, но, надеюсь, полезен]
Существует способ восстановить удаленные строки с помощью журнала транзакций, но только если вы используете сторонние инструменты и только ваша база данных находится в режиме полного восстановления.
Dell (ранее Quest) имеет Жаба для SQL Server и ApexSQL имеет Журнал ApexSQL и Восстановление ApexSQL который также может читать t-log и восстанавливать данные.К сожалению, Log Rescue from Red Gate может читать журналы только на SQL Server 2000.
Существует также способ прочитать t-log с помощью недокументированной команды dbcc log.Посмотреть более подробную информацию здесь.
Учитывая, что у вас уже есть резервные копии базы данных, вы можете восстановить их в отдельной базе данных, а затем использовать один из многих инструментов сравнения данных, существующих на рынке, чтобы вставить недостающие данные в рабочую базу данных.Конечно, это может восстановить только удаление данных до создания резервной копии.
Для этого вам понадобится сторонний инструмент.Инструмент должен иметь возможность заходить в журналы транзакций и просматривать записи журнала, чтобы вы могли видеть, что произошло.Я не использовал ни один из этих инструментов, но для начала я бы попробовал SQL Log Rescue от Red Gate.Попробуйте:
Я бы попробовал ChronicDB с бесплатной версией, а не платил за Red Gate.
Вы можете отменить транзакцию, используя Rollback
команда в SQL Server.Но вам необходимо знать, что транзакцию можно откатить, если транзакция была выполнена в течение Begin
сделка.