起因
先说下环境:一台 Windows Server 2012 的服务器,装了管家婆分销 ERP V3 和 SQL Server,用了两年一直正常。每天凌晨 SQL 自动备份,早上看一眼备份文件在不在,日子就这么过。
后来出于安全考虑,我把 Administrator 账号禁用了,新建了一个管理员账号日常使用。没想到这个动作捅了马蜂窝。
症状
禁用 Administrator 之后,SQL 的每天自动备份就再也不跑了。一开始我以为只是“换了个管理员账号,SQL 不认新账号”,于是去 services.msc 里面看服务有没有停,还去计划任务里翻了一遍,都没有发现直接的问题。
后来干脆把 Administrator 重新启用回来,结果备份还是不行。这就有点诡异了,账号都在了,服务也在跑,为什么到点就是不备份?
更让人火大的是,我打开 SSMS 手动跑了一次维护计划,居然弹出来 sa 登录失败 的错误。之前手动跑都是好的,现在一跑就报错。
排查过程
我当时的想法是,会不会是混合身份验证模式被关了?于是检查了一遍实例属性,安全页里明明一直勾着“SQL Server 和 Windows 身份验证模式”。那问题就不在这里。
接着去看 SQL Server 日志,翻到错误日志里满屏的 18456,后面带了个 State 8。这一刻我才意识到,sa 是被锁了。
这里需要说一个坑——维护计划如果用的是 SQL 账号(比如 sa)来创建和运行,后台会反复拿这个账号去连接 master 库。 如果你的 SQL Server 开了密码策略锁定(默认带策略的话),连续几次出错密码匹配,sa 就会被锁死。最扯淡的是,密码一直没改过也会被锁。这不是配置改坏了,而是 SQL Server 版本的一个老毛病,网上搜了一圈,从 2016 到 2019 都有人踩过。
解锁过程
因为 sa 被锁了,用 sa 登录自然进不去。
第一步:用 Windows 身份验证进 SSMS
在服务器本机上打开 SSMS,身份验证选 Windows 身份验证,用当前管理员账号连上去。这一步的关键在于,当前管理员账号是在本机管理员组里的,默认有 sysadmin 权限,所以能进去。
第二步:解锁 sa,不改密码
进了 SSMS 之后,新建查询,执行下面这行 SQL:
ALTER LOGIN sa ENABLE;
GO
ALTER LOGIN sa WITH CHECK_POLICY = OFF;
GO
ALTER LOGIN sa WITH CHECK_POLICY = ON;
GO
这套操作的本质是:先把 sa 启用,然后通过关闭再打开密码策略的方式,强制刷新 sa 的锁定状态——不用改密码。
由于当时我不想改 sa 密码(因为改完还要去管家婆配置里同步,麻烦),这个方案是最合适的。
执行完之后,用 sa 原来的密码重新连了一下 SSMS,能连上了。
修改维护计划运行身份
sa 解锁只是止血,如果不改维护计划的运行身份,下次跑计划还会再次被锁。所以我顺手把坑填了:
- 在 SSMS 里找到 管理 → 维护计划,双击进入设计器。
- 在设计器的顶部工具栏里找到 管理连接,把连接身份从“SQL Server 身份验证”改成 Windows 身份验证。
- 保存设计器。
这里有个小经验:管理连接不在左侧树状菜单的右键菜单里,而是要在设计器的工具栏上才能找到。我第一次也找了半天。
另外还把作业的所有者确认了一下,查到是 sa。作业所有者设为 sa 平时没毛病,因为这个内置账号不会失效,但配合上面这个锁定的坑,最好还是保持留意。
验证
改完之后手动右键作业 → 作业开始步骤,查一下备份目录,新的 .bak 文件生成了,手动执行成功。
然后我顺手跑了一句:
RESTORE VERIFYONLY FROM DISK = N'D:\DBBackup\xxx.bak';
返回“备份集有效”,说明备份文件不是摆设,真的能用来恢复。
第二天早上看了一眼备份目录,备份文件正常生成,自动备份彻底恢复。
总结
这次排查绕了不少弯,核心就两个点:
- 禁用 Administrator 导致 SQL 相关服务或任务找不到运行身份——这个还好理解。
- 维护计划用 sa 账号跑,触发了账号锁定——这个是坑,密码没改过也照样锁。
如果以后再遇到“自动备份不执行 + sa 报 18456”,优先按这个顺序排查:
- 看 SQL Server Agent 服务是否在运行;
- 看作业历史里的具体报错;
- 用 Windows 身份验证进 SSMS 解锁 sa;
- 把维护计划的连接改成 Windows 身份验证,别让维护计划再去碰 sa 的密码。
最后建议:如果服务器有安全要求不想用 Administrator 日常登录,不要只禁用账号了事,而是要检查所有绑定到该账号的服务、计划任务、SQL 作业的运行身份,全部改成新账号或专用服务账号,否则禁用一个账号,断掉的可能是一整条备份链路。
起因


