2009-11-03 32 views
1

由於我錯誤地更新了生產數據庫上的數據。有沒有辦法回滾這些交易。 我已經從管理工作室執行了更新語句,並且該腳本沒有在 開始Trans /回滾/提交。如何回滾SQL Server中的更改

感謝

+0

你有一個數據庫備份? – David

+0

有備份,但是是12小時前。 – rmdussa

回答

2

無交易(或者甚至是有致力於交易),有恢復所做的更改沒有簡單的方法。

交易對於確保對數據庫的一系列更改作爲一個單元執行是非常有用的,即,使所有這些更改都按照規定的順序執行,或者根本不會執行任何更改(或者更準確地說,數據庫服務器回滾任何易於完成的更改,在所有更改完成之前都會出現問題)。

根據與數據庫相關聯的恢復模式,在SQL日誌文件可能會有所幫助在以下兩種方法之一:

  • 如果你有一個備份,如果日誌文件被這個備份後立即開始,日誌文件可能有助於將數據庫「前滾」到問題中提到的不幸變化之前的位置。 (又名點即時恢復)
  • 如果沒有這樣的備份繳費,日誌文件可以適合扭轉不幸的變化

這兩種方法都意味着SQL日誌確實作爲一些恢復模型維護,這樣日誌文件在每次成功的批處理/事務之後都會被截斷(其數據丟失)。和這兩種方法都不容易,後者尤其可能需要第三方軟件(或長程序)等。

0

根據您的備份設置方式,您可能可以做一個時間點恢復。與您的DBA交談。您也可能希望儘快使數據庫脫機,以防止進行還原時最終會丟失的更多更改。

3

這裏是什麼,我會在這種情況下,這樣做:

  1. 在單獨的數據庫恢復備份,並比較這些數據庫恢復中存在的備份行?

  2. 如果您的數據庫處於完全恢復模式,請嘗試讀取事務日誌以恢復剩餘的行。

爲了讀取事務日誌,你可以使用第三方工具,如ApexSQL Log或試圖通過此功能fn_dblog做自己(here是一個例子,但它是相當複雜)。

以下是關於這個主題的其他職位:

Read the log file (*.LDF) in SQL Server 2008

How can I rollback an UPDATE query in SQL server 2005?