You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:SQL Server 2016镜像配置失败,数据库处于In-Recovery状态

我之前处理过好几个SQL Server 2016镜像配置翻车的案例,正好碰到过数据库卡在In-Recovery状态的情况,给你梳理几个实用的排查和修复步骤:

排查与修复SQL Server 2016镜像配置失败导致的In-Recovery状态问题

一、先搞清楚状态异常的根源

首先要明确:镜像节点恢复备份时,必须用WITH NORECOVERY参数,这是配置镜像的硬性前提。如果之前恢复备份时不小心用了RECOVERY,数据库会进入正常状态,后续强行配置镜像就会导致状态混乱,直接卡在In-Recovery。

你可以先在镜像节点执行这条查询,确认当前数据库状态:

SELECT name, state_desc FROM sys.databases WHERE name = '你的数据库名';

二、先终止异常会话,把数据库拉回可控状态

如果数据库长时间卡在In-Recovery,先别慌:

  1. 先终止主节点和镜像节点之间的异常镜像会话,在主节点执行(如果主节点报错,直接在镜像节点执行):
    ALTER DATABASE 你的数据库名 SET PARTNER OFF;
    
  2. 尝试把镜像节点的数据库恢复到正常状态(前提是你的备份是完整可用的):
    RESTORE DATABASE 你的数据库名 WITH RECOVERY;
    

执行完这条命令后,数据库会回到正常状态,我们可以重新走正确的镜像配置流程。

三、按标准流程重新配置镜像(别再用SSMS图形界面踩坑了)

很多人配置失败都是因为恢复备份的步骤不对,用T-SQL操作比SSMS图形界面更可靠:

  1. 主节点备份操作:
    • 先做完整备份:
      BACKUP DATABASE 你的数据库名 TO DISK = 'D:\Backup\你的数据库名_Full.bak' WITH INIT;
      
    • 紧接着做日志备份(必须在完整备份之后,且是镜像配置前的最后一次日志备份):
      BACKUP LOG 你的数据库名 TO DISK = 'D:\Backup\你的数据库名_Log.trn' WITH INIT;
      
  2. 镜像节点恢复备份:
    • 先恢复完整备份,必须带NORECOVERY:
      RESTORE DATABASE 你的数据库名 FROM DISK = 'D:\Backup\你的数据库名_Full.bak' WITH NORECOVERY, REPLACE;
      
    • 再恢复日志备份,同样带NORECOVERY:
      RESTORE LOG 你的数据库名 FROM DISK = 'D:\Backup\你的数据库名_Log.trn' WITH NORECOVERY;
      
    这时候数据库状态应该是RESTORING,这才是配置镜像的正确准备状态。
  3. 正式配置镜像:
    • 先在镜像节点执行:
      ALTER DATABASE 你的数据库名 SET PARTNER = 'TCP://主节点服务器名:端口号';
      
    • 再在主节点执行:
      ALTER DATABASE 你的数据库名 SET PARTNER = 'TCP://镜像节点服务器名:端口号';
      

四、几个容易踩的坑提前规避

  • 主节点和镜像节点的SQL Server版本、补丁级别必须完全一致,SQL Server 2016不同CU版本之间可能存在镜像兼容性问题。
  • 检查两个节点之间的镜像端口(默认5022)是否开放,防火墙有没有拦截镜像流量。
  • 确保数据库的恢复模式是FULL,这是镜像的硬性要求,执行这条命令确认:
    SELECT name, recovery_model_desc FROM sys.databases WHERE name = '你的数据库名';
    
    如果不是FULL,先修改:
    ALTER DATABASE 你的数据库名 SET RECOVERY FULL;
    

注意:当数据库处于In-Recovery状态时,绝对不要强行重启SQL Server服务,这可能会导致恢复进程更长甚至数据库损坏,一定要先查看SQL Server错误日志找具体原因。

内容的提问来源于stack exchange,提问作者Sandie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:26:35