这是一个超小知识点 :
场景就是------登录名(比如 sa)密码忘了,但你还能用别的账号登录 SSMS,想改个新密码,不影响正在跑的业务。
这篇文章就从实战出发,系统整理一下:
-
用 SSMS 图形界面改密码
-
用 T-SQL 脚本改密码
-
如何避免影响正在运行的系统
-
登录被禁用 / 被锁定 的处理
-
混合模式(Windows + SQL 登录)检查
目标:看完之后,你在生产环境里能稳稳当当地改 sa / 登录密码,不慌、不翻车。
一、先把几个基础概念说清楚
1. 旧密码是绝对"看不出来"的(若无登记在其他的地方是无法找回的)
SQL Server 里,登录密码保存的是 哈希值,不是明文:
-
不管你是普通用户还是
sysadmin,都看不到旧密码; -
所谓"找回密码"其实都是伪命题,正规做法只有:
重置一个新密码 → 同步修改各处连接配置
如果有人跟你说"帮你把旧密码看出来",那就是在搞安全绕过了。
2. Login ≠ User
-
登录名(Login) :在实例级别,用来连 SQL Server 的账号(比如
sa、wn、app_user)。 -
数据库用户(User):某个数据库里的用户,与登录名映射。
本文讲的是 登录名的密码(Login 密码),不是数据库用户。
Login 是"进大楼的门禁卡",User 是"每个房间里的成员身份"。
1. Login 是啥?
-
作用:连上整个 SQL Server 实例 用的账号
-
级别:服务器级别
-
存在位置:
master里、sys.server_principals -
有的权限:sysadmin、serveradmin 这些"服务器角色"
你在 SSMS 登录的时候填的:
-
身份验证:SQL Server 身份验证
-
登录名:
sa/wn/app... -
密码:xxxxx
这个账号就是 Login。
2. User 是啥?
-
作用:某个具体数据库里的身份
-
级别:数据库级别
-
存在位置:
sys.database_principals -
有的权限:db_owner、db_datareader、对某些表的 SELECT/UPDATE 等等
同一个人(同一个 Login)进到不同数据库,可以有不同的 User 身份:
-
在数据库
Q20里叫Q20User,只有读写几张表 -
在数据库
ReportServer里叫ReportUser,只有查询报表 -
在
master里可能压根没有对应 User
3. 改登录密码不会自动停服务
只要你用的是正常的 ALTER LOGIN / 图形界面修改:
-
不会重启 SQL Server 服务;
-
不会停数据库;
-
不会把已经连上的会话全部踢掉。
唯一会受影响的是:还在用"旧密码"来连接的那些程序/人,下次再连会失败。
二、前提条件:你得是 sysadmin
在 SSMS 里先用一个能登录的账号(比如 Windows 的 Administrator)连上,
新建查询窗口执行:
sql
SELECT
SUSER_NAME() AS 当前登录名,
IS_SRVROLEMEMBER('sysadmin') AS 是否Sysadmin;
-
是否Sysadmin = 1:可以继续,说明你有权限改别人的密码 ✅ -
否则:需要请真正的 DBA / 管理员来操作 ❌
三、通过 SSMS 图形界面重置密码(以 sa 为例)
-
在 对象资源管理器 中依次展开:
服务器名 → 安全性 → 登录名 -
找到要改的登录(比如
sa),右键 → 属性。 -
在左侧点 "常规":
-
选择:"SQL Server 身份验证"
-
在"密码"和"确认密码"里输入你的新密码,例如:
Lims@123 -
初学者可以先把下面三个勾取消掉,避免策略干扰:
-
强制密码策略
-
强制密码过期
-
用户必须在下次登录时更改密码
-
-
-
在左侧点 "状态":
- "登录" 选择 "启用"(不是禁用)
-
点 "确定" 保存。
到这里,这个登录名的密码就已经改成你刚填的了。
四、用新密码测试一下
-
在 SSMS 顶部点击:"连接 → 数据库引擎"。
-
设置:
-
身份验证:SQL Server 身份验证
-
登录名:比如
sa -
密码:刚设置的新密码(例如
Lims@123)
-
-
点"连接":
-
能连上 → 重置成功 ✅
-
连不上 → 要么密码输错,要么这个登录被禁用/锁定(见下一条)。
-
五、登录被禁用或锁定的两种常见情况(可选看)
1. 登录名前有红叉(被禁用)
脚本启用:
sql
ALTER LOGIN [sa] ENABLE;
2. 报"登录已锁定"
脚本解锁并重设密码:
sql
ALTER LOGIN [sa]
WITH PASSWORD = 'newpassword',
CHECK_POLICY = OFF,
CHECK_EXPIRATION = OFF,
UNLOCK;
六、最后一句话
SQL Server 登录密码忘了,不用慌:
用有 sysadmin 权限的账号登录 SSMS → 右键登录名改密码 → 用新密码测试即可。
不会重启服务,不会影响正在运行的数据库,只是以后都要用新密码。