SQL Server 2019 Always On AG数据库引擎服务账户锁定问题求助
问题描述
环境:带文件共享见证(FSW)的双节点SQL Server 2019 Always On AG集群,两节点使用同一DBEngine服务账户,此前运行正常。
故障现象:
- 重启被动节点DBEngine服务后,节点无法与主节点同步,副本状态显示断开
- 主节点SQL日志出现大量登录失败记录,DBEngine服务账户被锁定;解锁后很快再次锁定
已尝试操作: - 创建新服务账户,启动两节点后,启动节点2时账户锁定;解锁后停节点2,重启节点1正常,启动节点2服务后账户再次锁定
- 重建两节点镜像端点并重新赋予DBEngine服务账户连接权限,无效
- 重启两台服务器,无效
- 移除节点2副本,删除节点2上所有数据库及镜像端点,重启节点2服务后,两节点用同一账户运行正常;但通过向导重新添加节点2为副本,完成备份还原后,最后一步连接时账户再次锁定
可能根源
这种反复锁定服务账户的情况,核心是无效凭据持续尝试或权限配置冲突,常见场景:
- 镜像端点权限存在残留错误(比如旧服务账户SID仍被引用、新账户权限未正确覆盖)
- WSFC(Windows Server故障转移集群)中存在残留的旧凭据或错误身份验证配置
- 被动节点未清理干净AG相关系统对象,重新添加时触发错误身份验证请求
- 服务账户在AD中的属性异常(比如登录时间/工作站限制、重复SID)
分步排查与解决
1. 彻底清理节点2的AG残留对象
在节点2上执行:
- 确认已从AG移除节点2,且所有AG数据库已删除
- 删除镜像端点:
DROP ENDPOINT [MirroringEndpoint] - 删除DBEngine服务账户对应的SQL登录名(若存在):
DROP LOGIN [DOMAIN\ServiceAccount] - 重启节点2的DBEngine服务,确认账户正常运行且未锁定
2. 检查WSFC集群凭据配置
- 打开故障转移集群管理器,导航到集群→角色→对应AG角色→资源
- 检查AG资源的属性→凭据,确认使用当前DBEngine服务账户且凭据正确
- 清理集群节点服务和应用程序中残留的旧AG相关资源/凭据
3. 重新配置镜像端点并验证权限
在主节点和节点2分别执行:
创建镜像端点
CREATE ENDPOINT [MirroringEndpoint] STATE=STARTED AS TCP (LISTENER_PORT=5022, LISTENER_IP=ALL) FOR DATA_MIRRORING (ROLE=ALL, AUTHENTICATION=WINDOWS NEGOTIATE, ENCRYPTION=REQUIRED ALGORITHM AES)
赋予服务账户端点连接权限
GRANT CONNECT ON ENDPOINT::[MirroringEndpoint] TO [DOMAIN\ServiceAccount]
验证权限是否生效:
SELECT * FROM sys.server_permissions WHERE class_desc='ENDPOINT'
4. 验证AD中服务账户属性
- 打开AD用户和计算机,检查服务账户属性:
- 取消登录时间限制和登录到特定工作站的配置
- 确保账户设置为账户从不过期、用户不能更改密码
- 通过
whoami /user在节点查看SID,确认AD中无重复SID
5. 手动用T-SQL重新添加节点2到AG
避免向导自动配置错误,执行以下步骤:
- 在主节点备份AG数据库的完整备份和日志备份,复制到节点2并以
NORECOVERY模式还原 - 在主节点执行:
ALTER AVAILABILITY GROUP [AGName] ADD REPLICA ON N'Node2' WITH ( ENDPOINT_URL = N'TCP://Node2.Domain.com:5022', AVAILABILITY_MODE = SYNCHRONOUS_COMMIT, FAILOVER_MODE = AUTOMATIC, SEEDING_MODE = MANUAL ) - 在节点2执行:
ALTER AVAILABILITY GROUP [AGName] JOIN ALTER AVAILABILITY GROUP [AGName] GRANT CREATE ANY DATABASE - 检查AG副本状态,确认同步正常且服务账户未锁定
内容的提问来源于stack exchange,提问作者d_g_tal
相关产品推荐
相关产品推荐

