已升级SQL Server 2016至SP2-CU17,运行维护计划仍报sa登录失败错误18456如何解决
运行SQL Server维护计划时
sa账号登录失败问题 问题基础信息
- 触发场景:执行SQL Server维护计划过程中,日志查看器显示
sa登录失败;已经将实例升级到SQL Server 2016 SP2-CU17补丁版本,问题依旧存在。 - 核心错误日志:
05/01/2021 23:15:14,Logon,Unknown,Login failed for user 'sa'. Reason: Password did not match that for the login provided. [CLIENT: ] 05/01/2021 23:15:14,Logon,Unknown,Error: 18456 Severity: 14 State: 8.错误本质:18456错误状态8的含义非常明确,就是提交的账号密码和
sa账号实际的匹配密码不一致,这类问题和SQL Server补丁版本无关,打补丁无法解决凭据不匹配的问题。
- 当前实例版本:
Microsoft SQL Server 2016 (SP2-CU17) (KB5001092) - 13.0.5888.11 (X64) Mar 19 2021 19:41:38 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows 10 Pro 10.0 (Build 19042: )
排查修复步骤
- 核对维护计划的作业凭据
打开SSMS连接到实例,展开SQL Server代理→作业,找到对应维护计划生成的作业,依次进入每个作业步骤的属性页,检查连接配置里选择的登录账号:如果使用的是sa账号,逐字比对配置栏里填写的密码,和当前已知的sa实际密码是否一致。这类问题大多是之前修改过sa的密码,但维护计划生成作业时存的还是旧密码,直接把作业里的密码更新为最新值即可。 - 排查Windows侧缓存的旧凭据
如果确认作业里填写的密码和当前sa密码完全一致,打开控制面板→凭据管理器→Windows凭据,查找列表中是否有缓存的SQL Server相关sa登录凭据,存在的话直接删除,避免系统自动调用本地缓存的旧密码发起连接。 - 重新设置
sa账号密码匹配策略
打开SSMS,进入安全性→登录名→sa的属性页:- 确认
sa账号处于启用状态,没有被登录触发器拦截 - 检查“强制实施密码策略”的勾选状态:如果之前手动关闭过密码策略,可能出现内部存储的密码和系统校验逻辑不匹配的问题,直接重新设置一次符合Windows密码复杂度要求的
sa密码,再把新密码同步更新到所有使用sa的作业配置中。
- 确认
- 缩小排查范围
日志里的[CLIENT: ]字段为空,说明登录请求是SQL Server实例本地发起的,不存在外部IP爆破sa账号的情况,所有触发登录失败的请求都来自实例内部的维护计划作业,不需要额外排查网络层的入侵风险。
内容的提问来源于stack exchange,提问作者Devendra
相关产品推荐
相关产品推荐

