SQL Server日志传送:如何将目标数据库改为备用模式并解决还原状态问题?
SQL Server日志传送目标库无法转为可读状态的排查与解决
你的场景:已配置日志传送 SQL server1\source_database->SQL server2\target_database,SSMS报表显示运行正常,但目标库始终处于“Restoring”状态,尝试操作后仍未解决。以下是常见操作错误及对应解决方法:
一、保持日志传送同步,同时让目标库可读(STANDBY模式)
常见错误点及修复
日志传送配置未启用只读访问选项
若当初配置时未勾选“在备用模式下还原备份(允许只读访问)”,目标库会一直以NORECOVERY模式还原,无法可读。
修复步骤:- 打开SSMS,在源服务器上右键源数据库 → 任务 → 日志传送 → 编辑目标数据库设置
- 勾选“在备用模式下还原备份(允许只读访问)”,指定撤销文件路径(如
D:\SQLBackup\target_undo.ldf) - 保存配置,等待下一次日志备份自动还原后,目标库会切换为STANDBY模式,支持只读访问
手动还原备份时未指定STANDBY选项
若曾手动用NORECOVERY模式还原过备份,即使后续配置了STANDBY,日志传送作业仍会沿用NORECOVERY执行还原。
修复步骤:- 在目标服务器上停止日志传送的“日志还原”作业
- 执行T-SQL命令:
RESTORE DATABASE target_database WITH STANDBY = 'D:\SQLBackup\target_undo.ldf' - 重启日志还原作业,后续日志备份会以STANDBY模式还原,目标库保持可读
日志还原作业执行失败(报表误判)
SSMS报表可能未实时更新,需检查目标服务器上的日志还原作业历史:- 查看作业是否有执行失败记录(如备份文件访问权限不足、磁盘空间不够、网络共享路径不可达)
- 修复对应问题后,手动执行一次日志还原作业,完成后目标库会进入STANDBY可读状态
二、彻底脱离日志传送,将目标库转为独立可读可写数据库
若无需再同步源库数据,可终止日志传送并完成还原:
- 停止源服务器的“日志备份”作业和目标服务器的“日志还原”作业
- 在目标服务器执行T-SQL命令完成还原:
RESTORE DATABASE target_database WITH RECOVERY - 执行后目标库会脱离Restoring状态,转为正常可读写状态,同时日志传送链路断开
注意事项
- 执行RESTORE命令前,需确保无正在运行的还原进程,可通过以下命令检查:
SELECT * FROM sys.dm_exec_requests WHERE command LIKE 'RESTORE%' - STANDBY模式下,目标库在日志还原期间会短暂不可读,还原完成后自动恢复只读访问
内容的提问来源于stack exchange,提问作者ZedZip
相关产品推荐
相关产品推荐

