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

SQL Server 2008 基於事務日志的時間點還原操作指南

     編輯:關於SqlServer

前置條件

  1. 存在最近一次完整備份(.bak)。
  2. 目標數據庫恢復模式為 FULL(完整模式)。

四步還原流程

  1. 記錄誤操作時間點(如 2024-01-15 14:30:00),並立即備份尾部日志:
    USE master;
    BACKUP LOG [TargetDB] TO DISK = N'G:\TailLog.trn' WITH NORECOVERY;
    NORECOVERY 使數據庫進入恢復狀態,阻斷新寫入,保證日志鏈完整。
  2. 還原完整備份(同樣 NORECOVERY 保留後續日志還原能力):
    RESTORE DATABASE [TargetDB] FROM DISK = N'G:\Full.bak'
    WITH NORECOVERY, REPLACE;
  3. 還原尾部日志至指定時間點:
    RESTORE LOG [TargetDB] FROM DISK = N'G:\TailLog.trn'
    WITH STOPAT = N'2024-01-15 14:30:00', RECOVERY;
    STOPAT 精確到秒,時間格式為 MM/DD/YYYY HH:MI:SS AM/PM(12 小時制)。
  4. 驗證數據:誤刪/誤改記錄已恢復。

關鍵參數解析

參數作用
NORECOVERY保持數據庫恢復狀態,允許後續日志還原;尾部備份時防止新事務寫入
RECOVERY完成還原,帶上線,回滾未提交事務(默認)
STOPAT指定恢復停止時間點,精確到秒
REPLACE覆蓋現有數據庫文件(還原至不同名/路徑時需配合 MOVE)

常見誤區

  • ❌ 忘記備份尾部日志 → 丟失誤操作後到備份時間點的數據。
  • ❌ 完整備份還原用 RECOVERY → 無法接後續日志,鏈斷裂。
  • ❌ 時間格式錯誤(用 24 小時制) → STOPAT 失效,恢復到日志末尾。

進階:頁面級還原(SQL Server 2012+)

若僅少數頁損壞,可用 RESTORE DATABASE ... PAGE = '1:123' ... 僅還原損壞頁,極大縮短 RTO。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved