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

SQL Server 數據庫還原操作全流程圖解(企業管理器/SSMS)

     編輯:關於SqlServer

本文記錄使用 SSMS (SQL Server Management Studio) 圖形界面還原數據庫的標準流程,適用於完整備份、差異備份、事務日志備份、文件/文件組備份的還原場景。

還原前準備

  • 確認備份文件(.bak/.trn)可讀、路徑可達。
  • 目標數據庫若存在,確認是否覆蓋或改名還原。
  • 確保無活躍連接(或設置 SINGLE_USER/OFFLINE)。

標準還原向導步驟

  1. 對象總管 → 展開實例 → 右鍵 數據庫 → 還原數據庫...
  2. 常規 頁籤:
    • 來源:選擇 裝置 → 瀏覽添加 .bak 文件。
    • 目的地:資料庫 欄填入目標庫名(新名則建新庫)。
    • 下方備份集清單勾選需還原的完整/差異/日志備份(按 LSN 鏈順序)。
  3. 文件 頁籤(可選):
  4. 勾選 將所有文件重新定位到資料夾,指定新的 .mdf/.ldf 路徑(遷移盤符/目錄時必做)。
  5. 或逐行修改 還原為 路徑。
  6. 選項 頁籤(關鍵):
    • 恢復狀態:
      • RESTORE WITH RECOVERY:完成後上線,無法再應用日志(最後一步選此)。
      • RESTORE WITH NORECOVERY:保持恢復中,可繼續應用後續日志備份(中間步驟選此)。
      • RESTORE WITH STANDBY:唯讀待機模式,生成 .standby 文件,可查詢歷史快照。
    • 覆蓋現有數據庫 (WITH REPLACE):目標庫存在且允許覆蓋時勾選。
    • 關閉現有連接:自動設置 SINGLE_USER 強制斷開。
    • 提示還原前備份事務日志:尾日志備份,防止數據丟失(生產庫強烈建議)。
  7. 點擊 確定 執行,或 腳本 → 編寫腳本到新查詢視窗 獲取 T-SQL 供自動化/審計。

T-SQL 等效腳本範例

-- 完整備份還原 (NORECOVERY 留待應用日志)
RESTORE DATABASE [TargetDB]
FROM DISK = N'D:\Backup\Full.bak'
WITH FILE = 1,
     MOVE N'TargetDB' TO N'D:\Data\TargetDB.mdf',
     MOVE N'TargetDB_Log' TO N'D:\Log\TargetDB_Log.ldf',
     NORECOVERY, NOUNLOAD, STATS = 5;
GO

-- 差異備份還原
RESTORE DATABASE [TargetDB]
FROM DISK = N'D:\Backup\Diff.bak'
WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5;
GO

-- 事務日志還原 (最後一個用 RECOVERY)
RESTORE LOG [TargetDB]
FROM DISK = N'D:\Backup\Log.trn'
WITH FILE = 1, RECOVERY, NOUNLOAD, STATS = 5;
GO

常見問題與對策

問題原因解決
「備份集持有的數據庫備份與現有數據庫不同」備份來源庫與目標庫名/ID 不符勾選 WITH REPLACE 或改名還原
「無法獨佔鎖定數據庫」有活躍連接選項頁勾選「關閉現有連接」或手動 KILL/OFFLINE
「日志備份 LSN 斷裂」缺少中間日志備份或順序錯誤補全缺失 .trn,按 LSN 遞增順序還原
「磁盤空間不足」目標路徑磁盤滿清理空間或指定其他路徑 (MOVE 子句)

最佳實踐清單

  1. 生產庫還原必走腳本,嚴禁純手動點點點(不可審計、不可複現)。
  2. 還原前尾日志備份(BACKUP LOG ... WITH NORECOVERY),將 RPO 降為 0。
  3. 大庫還原開啟 STATS = 1 監控進度,預估完成時間。
  4. 還原後立即 DBCC CHECKDB、更新統計、重建索引、驗證應用連通性。
  5. 定期演練「備份→還原」全鏈路,驗證備份可用性與 RTO/RPO。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved