Отменить обновления таблицы в SQL Server 2008 - PullRequest
0 голосов
/ 06 июня 2010

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

Ответы [ 5 ]

5 голосов
/ 06 июня 2010

Этот инструмент говорит, что может это сделать, хотя и немного дорого. Существует пробный период, может быть, этого будет достаточно, чтобы вернуть ваши данные:

http://www.apexsql.com/sql_tools_log.asp?_kk=log%20explorer&_kt=49fb8026-ca7c-4c5e-bb06-99ee95393472&gclid=CPWP48T3i6ICFY1a2godtTS7UQ

4 голосов
/ 06 июня 2010

Нет. Если вы зафиксировали транзакцию, единственный способ восстановить исходную таблицу - получить ее из последней резервной копии.

1 голос
/ 06 июня 2010

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

Возможно, вы захотите задать этот вопрос на ServerFault, а некоторые системные администраторы могут знать это лучше.

1 голос
/ 06 июня 2010

если у вас есть только резервная копия, восстановите ее в другой базе данных и переместите только таблицу (таким образом, другие таблицы не будут затронуты). Если у вас также есть резервные копии журнала транзакций, вы также можете выполнить восстановление на определенный момент времени

0 голосов
/ 15 декабря 2017

Проверьте эту ссылку. Он показывает, как восстановить значения, используя журнал транзакций

https://www.experts -exchange.com / статьи / 28199 / Как извлекаемые удаленные ряды-в-SQL-Server.html

В статье показано, как мы можем восстановить удаленные данные, если это произошло случайно. Мы можем восстановить удаленные строки, если знаем время удаления данных. Мы можем достичь этой цели, используя LSN (Log Sequence Numbers). В нем показан пример восстановления удаленных строк путем проверки журнала транзакций со значениями LSN. Для обновлений используйте «LOP_MODIFY_ROW».

После удаления строк проверьте журнал, используя следующий запрос

Select [Current LSN] LSN], [Transaction ID], Operation, Context, AllocUnitName
FROM
fn_dblog(NULL, NULL)
WHERE Operation  = 'LOP_DELETE_ROWS'

В зависимости от идентификатора транзакции и количества затронутых строк отфильтруйте набор результатов. Затем используйте RESTORE DATABASE для восстановления значений из журнала.

ПРИМЕЧАНИЕ. Лучше всего выполнять это восстановление, как только вы обнаружите случайное изменение / удаление. Чем больше операций происходит в базе данных, тем выше вероятность того, что значения журнала транзакций могут быть перезаписаны.

...