重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: SQLSERVER有多个事务日志备份情况下的不完整恢复步骤 [打印本页]

作者: 郑全    时间: 2026-3-6 10:52
标题: SQLSERVER有多个事务日志备份情况下的不完整恢复步骤

比如有一个全备,C:\dbbak\szdb-20260226.bak
两个事务日志的备份:
C:\dbbak\szdb_log_202602260622.bak
C:\dbbak\szdb_log_202602262122.bak

现在,想恢复到 2026--02-26 21:20,
步骤如下:

1. 查看备份文件中的备份集信息(确认备份类型和时间,可选)
RESTORE HEADERONLY
FROM DISK = N'C:\dbbak\szdb-20260226.bak'
GO

2. 恢复完整备份(NORECOVERY:保持数据库处于恢复状态,以便继续恢复日志)
RESTORE DATABASE szdb
FROM DISK = N'C:\dbbak\szdb-20260226.bak'
WITH NORECOVERY,  -- 关键:不恢复数据库,等待日志恢复
     REPLACE,      -- 覆盖现有数据库(谨慎使用)
     STATS = 10    -- 每完成10%显示进度
GO


3. 恢复第一个日志备份(NORECOVERY)
RESTORE LOG szdb
FROM DISK = N'C:\dbbak\szdb_log_202602260622.bak'
WITH NORECOVERY,
     STATS = 10
GO

4. 恢复第二个日志备份,且指定时间点(RECOVERY完成恢复)
RESTORE LOG szdb
FROM DISK = N'C:\dbbak\szdb_log_202602262122.bak'
WITH RECOVERY,                      -- 最终恢复,数据库可用
     STOPAT = N'2026-02-26 21:20:55', -- 核心:恢复到指定时间点
     STATS = 10
GO


之后打开数据库即可验证





欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2