Как отменить операцию удаления в SQL Server 2005? - PullRequest
2 голосов
/ 14 октября 2008

В нашей тестовой базе данных внезапно пропали строки. Мы хотим их вернуть.

Есть ли способ просеять все, что произошло с базой данных сегодня? Каждый оператор SQL? Я предполагаю, что такие вещи есть в журнале транзакций, но я не уверен, как их просмотреть.

Есть ли способ отменить операции удаления?

Кстати: да, у нас есть резервная копия, но мы предпочли бы также найти причину удаления ...

Ответы [ 5 ]

2 голосов
/ 23 февраля 2013

[поздний ответ, но, надеюсь, полезно]

Существует способ восстановить удаленные строки с помощью журнала транзакций, но только если вы используете сторонние инструменты и только ваша база данных находится в режиме полного восстановления.

Dell (ранее Quest) имеет жабу для SQL Server , а ApexSQL имеет ApexSQL Log и ApexSQL Recover , которая также может читать t-log и восстанавливать данные. К сожалению, Log Rescue from Red Gate может только читать журналы на SQL Server 2000.

Существует также способ прочитать t-log, используя недокументированную команду dbcc log. Подробнее здесь .

Учитывая, что у вас уже есть резервные копии базы данных, вы можете восстановить их в отдельной базе данных, а затем использовать один из многих инструментов сравнения данных, существующих на рынке, для вставки недостающих данных в производственную базу данных. Конечно, это может восстановить данные только до создания резервной копии.

1 голос
/ 14 октября 2008

Вам нужен сторонний инструмент для этого. Инструмент должен иметь возможность заходить в журналы транзакций и просматривать записи журнала, чтобы вы могли видеть, что произошло. Я не использовал ни один из этих инструментов, но я бы попробовал Red Log SQL Rescue для начинающих. Попробуйте:

http://www.red -gate.com / продукция / SQL_Log_Rescue / index.htm

1 голос
/ 22 октября 2011

Я бы попробовал ChronicDB с бесплатной версией, а не заплатил бы за Red Gate

http://chronicdb.com/blogs/undelete_from_whoops

1 голос
/ 14 октября 2008

Вы можете сделать это с помощью некоторых инструментов Red Gate , но это стоит. Взгляните на SQL Log Rescue .

В противном случае я бы соблазнился сделать восстановление.

0 голосов
/ 20 февраля 2016

Вы можете отменить транзакцию, используя команду Rollback в SQL Server. Но вы должны знать, что транзакция может быть отменена, если транзакция была выполнена в транзакции Begin.

...