2010-06-06 117 views
0

我更新了SQL Server 2008中的一個表,意外,我正在通過單元格複製來更新另一個表,但是我覆蓋了原始表。有沒有一種方法可以恢復我的表格內容?在SQL Server 2008中撤消表更新

回答

4

不。如果您提交了交易,恢復原始表的唯一方法是從最近的備份中獲取。

+0

我聽說SQL Server中有東西,我猜它叫做事務日誌,它包含我所做的所有事務,但我不確定它! – sikas 2010-06-06 16:48:59

+0

@sikas - 你知道你的數據庫有什麼恢復模式嗎? – 2010-06-06 17:26:15

+0

不知道,我怎麼知道? – sikas 2010-06-07 16:59:17

1

如果您只有一個備份,然後將其恢復到另一個數據庫並移動表(這種方式沒有其他表會受到影響)。如果你還有事務日誌備份,那麼你也可以做一個時間點恢復

+0

我可以找到那些事務日誌備份嗎? – sikas 2010-06-06 19:10:28

+0

問你的數據庫管理員,或者已經設置了這個數據庫和備份策略 – SQLMenace 2010-06-06 19:34:23

+0

好吧,我是安裝SQL Server的人,我將它安裝在我的個人電腦上,而不是公司的一臺,但我不知道在哪裏找到或這些日誌在哪裏存儲! – sikas 2010-06-07 17:01:01

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'。

刪除行後使用基於TRANSACTIONID以下查詢

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

和受影響的行數檢查日誌,篩選結果集。然後使用RESTORE DATABASE從日誌中恢復值。

注意:一旦意識到意外修改/刪除,最好儘快恢復。數據庫中發生的操作越多,事務日誌值可能被覆蓋的概率就越高。