2010-06-06 1 views
0

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

ответ

4

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

+0

Я слышал, что в SQL Server что-то есть, я думаю, это называется журналом транзакций, который содержит все транзакции, которые я сделал, но я не уверен в этом! – sikas

+0

@sikas - Вы знаете, в какой модели восстановления находится ваша база данных? –

+0

Нет, я не знаю, как я могу это знать? – sikas

1

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

+0

HOw я могу найти эти резервные копии журнала транзакций? – sikas

+0

спросите своего администратора базы данных или, однако, настроили эту базу данных и стратегию резервного копирования – SQLMenace

+0

ну, я тот, кто установил SQL Server, я установил его на свой персональный компьютер, а не на компанию, но я не знаю, где найти или где хранятся эти журналы! – sikas

1

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

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

-1

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

https://www.experts-exchange.com/articles/28199/How-to-recover-deleted-rows-in-SQL-Server.html

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

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

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

На основе TransactionID и количество строк, фильтровать результирующий набор. Затем используйте RESTORE DATABASE для восстановления значений из журнала.

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