下面记录下建立好alwayson可用性组后,向可用性组内添加数据库出现过的问题及解决方法
一、数据库未处于恢复状态
将数据库联接到可用性组的时候报错:
数据库“XXXX”未处于恢复状态,而此状态是镜像数据库或辅助数据库所必需的。必须使用 WITH NORECOVERY 还原远程数据库。 (Microsoft SQL Server,错误: 1464)
这个问题好解决,就是还原辅助副本的时候,没有选择with no recovery选项
还原之后,在SQL Server Management Studio上查看数据库,后面有“正在还原”字样,这时可以将数据库联接到可用性组了。
二、镜像数据库包含的事务日志数据不足
镜像数据库 "XXXXX" 包含的事务日志数据不足,无法保留主体数据库的日志备份链。如果没有从主体数据库进行日志备份或者没有在镜像数据库上还原日志备份,则可能会出现这种情况。 (Microsoft SQL Server,错误: 1478)
解决方法在中有回答给出:
The workaround for this is:
1) Disable your transaction log backup job 2) set your primary database to Simple recovery mode save the change3) set recovery mode back to Full again4) backup the database5) restore on the mirror server in the "RESTORE WITH NORECOVERY" state6) setup mirroring7) re-enable your transaction logging on the primary server
翻译一下就是:
1)禁用事务日志备份作业,如果没有,可以忽略这步
2)将主副本的数据库设置为简单恢复模式并保存
3)再设置回去成完整恢复模式
4)备份数据库
5)在镜像数据库上,也就是辅助副本数据库上恢复这个备份文件,恢复的时候选择RESTORE WITH NORECOVERY选项
6)再将辅助副本联接到可用性组
7)重新启用事务日志备份作业,如果没有,可以忽略
另外,
数据库“XXXX”的远程副本没有恢复到足以启用数据库镜像或将其联接到可用性组的程度。您需要通过从主体/主数据库还原当前日志备份,将缺失的记录日志应用于远程数据库。 (Microsoft SQL Server,错误: 1408)
这个报错也可以用上述方法解决。
三、仅当您使用 master 数据库时,才允许可用性组 DDL 操作
仅当您使用 master 数据库时,才允许可用性组 DDL 操作。请运行 USE MASTER 命令,然后重试您的可用性组 DDL 命令。 (Microsoft SQL Server,错误: 35208)
一种方法是点击“脚本”,在生成的脚本开头手动增加use master语句。
还有一种方法是,在将副本添加到可用性组-连接到副本的时候,“连接到数据库”选择“默认”。这样,后续操作就不会报需要使用master的错误了。