首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料庫災難恢復:從備份還原到緊急附加的完整策略

     編輯:關於SqlServer

恢復策略分級

依據資料庫狀態與備份可用性,恢復手段由優到劣:

第一優先:正規備份還原(最安全、最完整)

  • GUI 操作:SSMS → 右鍵資料庫 → 「工作」→「還原」→「資料庫」。
  • T-SQL 指令:
    RESTORE DATABASE [TestDB]
    FROM DISK = N'C:\Backup\TestDB.bak'
    WITH REPLACE, STATS = 5; -- 顯示進度
  • 支援完整、差異、記錄備份鏈還原至任意時間點。

第二優先:緊急附加資料檔(無備份時的救命稻草)

當資料庫引擎癱瘓、無法啟動服務,但 `.mdf`/`.ldf` 檔案完好時:

-- 情況 A:同時擁有 .mdf 與 .ldf
EXEC sp_attach_db @dbname = N'pubs',
    @filename1 = N'C:\Data\pubs.mdf',
    @filename2 = N'C:\Data\pubs_log.ldf';

-- 情況 B:僅剩 .mdf(記錄檔遺失/損壞)
EXEC sp_attach_single_file_db @dbname = N'pubs',
    @physname = N'C:\Data\pubs.mdf'; -- 自動重建記錄檔,資料庫可能進入唯讀模式
風險提示:`sp_attach_single_file_db` 可能導致資料庫變為「唯讀」或「疑似」狀態,且未提交的交易將丟失。僅作為最後手段。

第三優先:系統資料庫重建(master/model/msdb 損壞)

  • 使用安裝媒體執行 `Setup /QUIET /ACTION=REBUILDDATABASE` 重建系統資料庫。
  • 再依序還原 master、msdb 備份,最後附加使用者資料庫。

關鍵最佳實務

  1. 備份驗證:定期執行 `RESTORE VERIFYONLY` 確保備份檔可用。
  2. 記錄備份頻率:高交易量系統建議 15-30 分鐘一次記錄備份,將 RPO(資料遺失容忍度)降至最低。
  3. 離場備份:至少一份備份存放於異地/雲端,防範機房級災難。
  4. 演練恢復:每季實施一次「無腳本恢復演練」,驗證流程與人員熟練度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved