登录名大小写敏感导致登录失败?
SQL Server 实例对登录名大小写敏感(排序规则带二进制/显式敏感标记)时,大小写写错就登录失败的判断与处理路径。
简短答案
多数实例对登录名大小写不敏感,但服务器排序规则带 BIN(二进制)或显式大小写敏感标记时,登录名一字不差才算对——SA 与 sa 就是两个不同登录。判断依据是查服务器排序规则,处理就是按创建时的原始大小写写登录名。
现象对照
| 现象 | 判断 | 处理 |
|---|---|---|
| 换台机器/重装系统后老账户都登不上 | 新排序规则敏感 | 核对排序规则 |
| 一直能登,某次改大小写突然失败 | 排序规则本身就是敏感的 | 写回原始大小写 |
| 程序连接串里登录名写错大小写 | 客户端侧 | 改连接串 |
排查步骤
- 用 Windows 认证连上 SSMS,查排序规则:
SELECT SERVERPROPERTY('CollationName');
名称里含 BIN(如 SQL_Latin1_General_CP1_BIN)或明确大小写敏感标记的,登录就区分大小写。
2. 查账户真实名字:
SELECT name FROM sys.server_principals;
按列出的原始大小写写连接串。
3. 客户端程序侧核对连接串里的 User ID;改完在 SSMS 里用相同写法验证。
4. 各版本行为一致;安装时排序规则的选择见 SQL Server 2022 Developer、SQL Server 2019 Developer 条目页。
排序规则建实例时就定死了,不能事后改服务器级排序规则;只有敏感实例且想统一大小写时,才是重新建库迁移的场景,代价很高,先确认是否真有必要。
操作小结
- 查
CollationName判断是否敏感。 - 敏感实例一律用账户原始大小写登录。
- 连接串里的登录名同步核对。