Creating a SQLServer 2016 AlwaysOn Availability Group

If possible, the file path (including the drive letter) of a given secondary database be identical to the path of the corresponding primary database.

Procedure

AlwaysOn Node:

【入域】-【全新 SQLServer 独立安装】

All Nodes:

SSCM 中修改实例启用 Always On 可用性组,重启实例。

enable-alwayson

Errors

数据库 “XXXX” 未处于恢复状态,而此状态是镜像数据库或辅助数据库所必需的。必须使用 WITH NORECOVERY 还原远程数据库。 (Microsoft SQL Server,错误: 1464)

Solution:

还原辅助副本的时候,必须选择 with norecovery 选项。


镜像数据库 "XXXXX" 包含的事务日志数据不足,无法保留主体数据库的日志备份链。如果没有从主体数据库进行日志备份或者没有在镜像数据库上还原日志备份,则可能会出现这种情况。 (Microsoft SQL Server,错误: 1478)

数据库 “XXXX” 的远程副本没有恢复到足以启用数据库镜像或将其联接到可用性组的程度。您需要通过从主体 / 主数据库还原当前日志备份,将缺失的记录日志应用于远程数据库。 (Microsoft SQL Server,错误: 1408)

Workaround:

  1. Disable your transaction log backup job.
  2. set your primary database to Simple recovery mode save the change.
  3. set recovery mode back to Full again.
  4. backup the database.
  5. restore on the mirror server in the "RESTORE WITH NORECOVERY" state.
  6. setup mirroring.
  7. re-enable your transaction logging on the primary server.

翻译一下就是:
1)禁用事务日志备份作业,如果没有,可以忽略这步
2)将主副本的数据库设置为简单恢复模式并保存
3)再设置回去成完整恢复模式
4)备份数据库
5)在镜像数据库上,也就是辅助副本数据库上恢复这个备份文件,恢复的时候选择 RESTORE WITH NORECOVERY 选项
6)再将辅助副本联接到可用性组
7)重新启用事务日志备份作业,如果没有,可以忽略


无法对可用性组 “ag-listener” 创建、联接或添加副本,因为节点 “SJ03” 是副本 “MSSQLSERVER” 和 “SJ03” 的可能的所有者。如果一个副本是故障转移群集实例,请从其可能的所有者中删除重叠的节点,然后再试。


Solution:


2024-07-19 11:47:50.71 Logon Database Mirroring login attempt by user 'SJ\SJ03.' failed with error: 'Connection handshake failed. The login 'SJ\SJ03' does not have CONNECT permission on the endpoint. State 84.'. [CLIENT: 192.168.3.186]

Solution:

USE [master]
GO
CREATE LOGIN [SJ\SJ03$] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[简体中文]
GO
GRANT CONNECT ON ENDPOINT::hadr_endpoint TO [SJ\SJ03$]
GO