2015-01-15 38 views
-1

在SQL服務器中,我使用查詢更新了一個表,而無需放置條件。 現在我想要表中的所有記錄。我怎樣才能找回所有的行。 該查詢直接執行而沒有使用任何事務。由於錯誤我更新了一個表,而不會放在哪裏條件。現在我想要表中的所有記錄。我如何取回所有行

+7

從備份中恢復。 –

+0

我沒有該表的任何備份。 –

+2

然後你沒有生產數據庫。如果您對數據庫的備份不夠關心,爲什麼您會關心它包含錯誤的數據? –

回答

3

您可以在這裏做三件事。

選項1:做一個完整的從備份

這將數據庫重置回以前的時間點恢復。之後在數據庫中修改的任何內容都將丟失。

選項2:做一個完整的從備份恢復和重播事務日誌

這會首先做一樣的選擇1,但然後重播,你在備份後的數據庫做了所有的修改。很明顯,你只會重播事務日誌,直到你搞砸爲止。

方案3:啓動數據手動

這裏拼湊你基本上要回去和更新與「新」的舊數據行。此數據任何源你可能將是無價在這裏,像打印,截屏,內存等


既然你已經說過你沒有備份你現在有提前3個任務你:

  1. 啓動備份數據庫
  2. 學一招,當涉及到手動更新數據庫以上
  3. 選項3,拼湊數據,更新的行回到他們的舊值,就儘可能

訣竅:如何當你怕搞亂

的基本上,你這樣寫你的SQL腳本來更新數據庫:

BEGIN TRANSACTION 

SELECT ... anything you need to verify that the update has NOT taken place 

UPDATE ... your update statement (or DELETE, INSERT, etc.) 

SELECT ... anything you need to verify that the update HAS taken place 

ROLLBACK TRANSACTION 

在做這種方式您可以嘗試一下,只要您沒有在Management Studio中專門選擇一段SQL並僅執行該操作即可。當您確認一切正確後,包括告知您更新/刪除/插入了多少行的消息,然後您將ROLLBACK TRANSACTION替換爲COMMIT TRANSACTION並實際保存更改。

相關問題