目录标题
- SQL Server 可用性组自动种子设定失败问题笔记
- 一、问题背景
- 二、错误日志分析
- 错误信息
- 错误代码与分析
- 三、自动种子设定概述(同上,无需修改)
- 四、解决步骤
- 1. 备份主数据库
- 2. 在辅助副本上恢复数据库
- 3. 重新启动自动种子设定
SQL Server 可用性组自动种子设定失败问题笔记
一、问题背景
在 SQL Server 的可用性组(Always On Availability Groups)中,尝试对可用性数据库 [脱敏数据库名]
进行自动种子设定时出现失败,日志中频繁出现错误信息。
二、错误日志分析
错误信息
2025-03-29 11:46:25.04 spid64s Database "[脱敏数据库名]" is not in a recovering state which is required for a mirror database or secondary database. The remote database must be restored using WITH NORECOVERY.
2025-03-29 11:46:25.04 spid64s Automatic seeding of availability database '[脱敏数据库名]' in availability group 'ha_group' failed with an unrecoverable error. Correct the problem, then issue an ALTER AVAILABILITY GROUP command to set SEEDING_MODE = AUTOMATIC on the replica to restart seeding.
错误代码与分析
- 错误代码:1464
- 严重级别:16(一般错误,通常由用户操作或应用程序问题导致)
- 错误状态:102
- 错误原因:数据库
[脱敏数据库名]
未处于恢复状态,而镜像数据库或辅助数据库需要处于恢复状态。远程数据库恢复时必须使用WITH NORECOVERY
选项。
三、自动种子设定概述(同上,无需修改)
四、解决步骤
1. 备份主数据库
在主副本上,对主数据库 [脱敏数据库名]
进行完整备份与事务日志备份。
-- 完整备份
BACKUP DATABASE [脱敏数据库名]
TO DISK = 'C:\Backup\[脱敏数据库名]_full.bak';-- 事务日志备份
BACKUP LOG [脱敏数据库名]
TO DISK = 'C:\Backup\[脱敏数据库名]_log.trn';
2. 在辅助副本上恢复数据库
在辅助副本上,使用 WITH NORECOVERY
选项恢复完整备份与事务日志备份。
-- 恢复完整备份
RESTORE DATABASE [脱敏数据库名]
FROM DISK = 'C:\Backup\[脱敏数据库名]_full.bak'
WITH NORECOVERY;-- 恢复事务日志备份
RESTORE LOG [脱敏数据库名]
FROM DISK = 'C:\Backup\[脱敏数据库名]_log.trn'
WITH NORECOVERY;
3. 重新启动自动种子设定
在主副本上,执行以下命令重新设定自动种子设定。
ALTER AVAILABILITY GROUP ha_group
MODIFY REPLICA ON 'SecondaryReplicaName'
WITH (SEEDING_MODE = AUTOMATIC);
其中,SecondaryReplicaName
需替换为实际的辅助副本名称。