我的意思是更新數據庫中記錄的單個列,但是我忘了指定id,並且每個記錄現在都已更新!有沒有一種方法可以回滾數據,請幫忙!意外更新了sql server上的數據庫
我的意思運行下面的語句:
Update Table set Cusname = "some name" where id = 2;
,但我居然跑了以下內容:
update Table set Cusname = "some name"
現在每一個cusname列具有相同的名稱。請幫忙 請幫忙!
我的意思是更新數據庫中記錄的單個列,但是我忘了指定id,並且每個記錄現在都已更新!有沒有一種方法可以回滾數據,請幫忙!意外更新了sql server上的數據庫
我的意思運行下面的語句:
Update Table set Cusname = "some name" where id = 2;
,但我居然跑了以下內容:
update Table set Cusname = "some name"
現在每一個cusname列具有相同的名稱。請幫忙 請幫忙!
你可以做的事情不多......這就是爲什麼你有一個好的備份策略(理想情況下,在測試中測試之前,不要在生產數據庫中執行任何「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),即使對於最低的服務計劃,備份也是即裝即用的。
壞計劃。如果幸運的是它處於完全恢復模式,則完全備份實際上會清除事務日誌。 – Paparazzi
請問DBA恢復。 (在那裏,這樣做...) – jarlh
對不起,但我該怎麼做? – 1future
你沒有DBA? – jarlh