2016-06-08 31 views
0

我的意思是更新數據庫中記錄的單個列,但是我忘了指定id,並且每個記錄現在都已更新!有沒有一種方法可以回滾數據,請幫忙!意外更新了sql server上的數據庫

我的意思運行下面的語句:

Update Table set Cusname = "some name" where id = 2; 

,但我居然跑了以下內容:

update Table set Cusname = "some name" 

現在每一個cusname列具有相同的名稱。請幫忙 請幫忙!

+0

請問DBA恢復。 (在那裏,這樣做...) – jarlh

+0

對不起,但我該怎麼做? – 1future

+0

你沒有DBA? – jarlh

回答

3

你可以做的事情不多......這就是爲什麼你有一個好的備份策略(理想情況下,在測試中測試之前,不要在生產數據庫中執行任何「ad hoc」t-sql數據庫,然後複製/粘貼語句以幫助避免將來出現這些類型的錯誤)。

從註釋拉動信息,您可以通過執行這些方針的東西開始:Can I rollback a transaction I've already committed? (data loss)

(這是PostgreSQL的,但這個想法是一樣的... ...停止服務器,備份所有相關文件,等等)。

如果您有事務日誌記錄和日誌備份,則可以嘗試進行時間點恢復,但必須先設置之前的以解決您的錯誤。看到這裏:Reverse changes from transaction log in SQL Server 2008 R2?

在這種情況下,你最好的選擇可能是花一些時間解決問題而不需要恢復。它看起來像你更新你的客戶名稱。你有另外的客戶信息來源嗎?你能編譯一個外部客戶列表,比如地址,這樣你就可以在這些列表上重新匹配你的數據庫的客戶名稱嗎?如果是這樣,這可能是一個更容易的途徑,讓你完全恢復你的打擊領域。如果您沒有大量數據,則可以執行此操作並手動填寫剩餘的數據。這是一個過程,但沒有一個好的數據庫恢復備份,它可能是值得一看的...

另外請注意,如果數據庫託管在基於雲的S/P/Iaas,您可能會進行更深層次的備份,或者對於「SQL數據庫」(例如SQL Azure),即使對於最低的服務計劃,備份也是即裝即用的。

+0

壞計劃。如果幸運的是它處於完全恢復模式,則完全備份實際上會清除事務日誌。 – Paparazzi

相關問題