Sql-Server

SQL Server 錯誤地更新行而沒有備份

  • February 18, 2019

UPDATE昨天做了一個錯誤查詢。數據庫引擎是MSSQL,版本是2017。

我沒有任何備份。我所擁有的只是數據庫本身。你知道有什麼方法可以在該死的查詢被觸發前一秒重做我的修改嗎?

另外,我嘗試了事務日誌,但是每次我想將數據庫恢復到之前的時間時,UPDATE我不小心遇到了這個消息:No packupset is selected在 SQL Server 中。我認為這是因為我TLog沒有時間因為我爸爸以前沒有備份任何事務日誌。

免責聲明

請注意,這些步驟絕不是完整的,並且不保證您的數據庫和/或數據的恢復。請在您的具體情況下將它們用作指導,並註意多種未知原因可能導致數據完全失去。

步驟 1.) 和步驟 2.) 可用於任何情況

可能需要進一步的額外步驟才能恢復您的數據。

歡迎來到 DBA.SE。很抱歉聽到你過得不好。

處理你目前的情況

如果為此數據庫啟用了完全恢復模式,請執行以下操作:

  1. 停止到數據庫的所有事務/連接。現在 !!
  2. 想想你的下一步。
  3. 使數據庫離線並複制 *.MDF 和 *.LDF 文件。
  4. 使數據庫重新聯機。
  5. 使用選項執行事務日誌備份(TLOG 備份)WITH ... NO_TRUNCATE ...。這確保數據不會從 TLOG 中刪除。 僅當數據庫先前已使用 FULL 備份進行備份時,此步驟才有效
  6. 使用初始完整備份(步驟 1 之前)和第二步的 TLOG 備份將數據庫還原到不同數據庫伺服器上的時間點。時間應該在事故發生之前。
  7. 搜尋修改後的數據。
  8. 提取數據。
  9. 確認無誤後將數據導入生產伺服器。
  10. 讓生產重新上線。

如果您沒有完全恢復模式的數據庫,那麼現在更改它不會有任何影響。您將無法挽救數據,因為它可能已經送出到數據庫並且在 TLOG 文件中不再可用。如果未執行初始完整備份,則這些步驟將不起作用。

打掃乾淨

  1. 與管理層討論發生的事情。
  2. 實施變更管理流程。
  3. 為您的數據庫系統實施可靠的備份過程。

DBA 提示

這裡有幾個基本提示:

  1. 始終考慮下一步。
  2. 在修改數據之前,請確保您有備份。
  3. 如果數據很重要/很有效,請確保您FULL啟用了恢復模式並且正在執行事務日誌備份。
  4. 只有在管理層告訴您這樣做並且您有已簽署的正式變更請求後,才能在生產環境中更改數據。
  5. 切勿手動接觸生產數據,除非它是在停機期間並且您已滿足 1. 和 2. 和 3 的要求。

幾年前我有一個類似的案例,但我正在刪除一些記錄。我能夠製作一些應用程序來讀取原始數據庫文件並讀出已刪除的數據。大量工作和大量使用十六進制編輯器研究內容。我能夠恢復一切。因此,如果它真的很重要,您可以先使用十六進制編輯器打開數據庫文件(製作副本),然後查看是否可以找到失去的數據,如果可以找到,則必須查找列和行被儲存並製作一個程序來讀取它並以某種方式儲存它,您可以使用這些數據。祝你好運。

引用自:https://dba.stackexchange.com/questions/230012