Windows 认证能登、SQL 登录失败怎么办?
能用 Windows 账户连上、SQL 账户(sa 等)登录却失败的定位路径:确认认证模式为混合、解锁启用 SQL 登录、核对 sa 映射。
简短答案
Windows 认证能登说明网络与引擎都正常,问题出在 SQL 认证这条链路:要么实例当前是纯 Windows 认证模式(SQL 登录根本不开),要么该 SQL 账户被禁用/锁定/过期。先确认认证模式是「混合」,再查账户状态。
现象对照
| 现象 | 原因 | 处理 |
|---|---|---|
| Windows 能登,sa 登报 18456 | 认证模式是纯 Windows | 切混合模式 |
| 混合模式下 sa 仍失败 | sa 被禁用/锁定 | 启用/解锁 sa |
| 切了混合模式不生效 | 服务没重启 | 重启 SQL Server 服务 |
处理步骤
- 用 Windows 认证连上 SSMS,查当前模式:
SELECT name FROM sys.server_principals WHERE name = 'sa';
- 切混合模式:SSMS 里右键实例 → 属性 → 安全性 → 选「SQL Server 和 Windows 身份验证模式」→ 应用后重启 SQL Server 服务(认证模式必须重启才生效)。
- 启用/解锁 sa:
ALTER LOGIN sa ENABLE;
-- 密码忘了/被锁就顺手重置
ALTER LOGIN sa WITH PASSWORD = '新密码需符合复杂度要求';
- 验证:断开重连,用 sa 登录;各版本的认证模式位置一致,见 SQL Server 2022 Developer、SQL Server 2025 Developer 条目页。
生产环境启用 SQL 认证时,sa 密码务必设强密码并考虑改用最小权限应用账户而非 sa,这是后续「最小权限账户」话题的前置动作。
操作小结
- 先确认模式:纯 Windows 模式 → SQL 登录必失败。
- 切混合模式后必须重启服务。
- 账户被禁/锁,用 Windows 认证登进去解锁改密。