SQL Server小技巧:用 SSMS 重置登录密码,不影响正在运行的系统

这是一个超小知识点

场景就是------登录名(比如 sa)密码忘了,但你还能用别的账号登录 SSMS,想改个新密码,不影响正在跑的业务。

这篇文章就从实战出发,系统整理一下:

  • 用 SSMS 图形界面改密码

  • 用 T-SQL 脚本改密码

  • 如何避免影响正在运行的系统

  • 登录被禁用 / 被锁定 的处理

  • 混合模式(Windows + SQL 登录)检查

目标:看完之后,你在生产环境里能稳稳当当地改 sa / 登录密码,不慌、不翻车

一、先把几个基础概念说清楚

1. 旧密码是绝对"看不出来"的(若无登记在其他的地方是无法找回的)

SQL Server 里,登录密码保存的是 哈希值,不是明文:

  • 不管你是普通用户还是 sysadmin都看不到旧密码

  • 所谓"找回密码"其实都是伪命题,正规做法只有:

    重置一个新密码 → 同步修改各处连接配置

如果有人跟你说"帮你把旧密码看出来",那就是在搞安全绕过了。

2. Login ≠ User

  • 登录名(Login) :在实例级别,用来连 SQL Server 的账号(比如 sawnapp_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 为例)

  1. 对象资源管理器 中依次展开:
    服务器名 → 安全性 → 登录名

  2. 找到要改的登录(比如 sa),右键 → 属性

  3. 在左侧点 "常规"

    • 选择:"SQL Server 身份验证"

    • 在"密码"和"确认密码"里输入你的新密码,例如:Lims@123

    • 初学者可以先把下面三个勾取消掉,避免策略干扰:

      • 强制密码策略

      • 强制密码过期

      • 用户必须在下次登录时更改密码

  4. 在左侧点 "状态"

    • "登录" 选择 "启用"(不是禁用)
  5. "确定" 保存。

到这里,这个登录名的密码就已经改成你刚填的了。

四、用新密码测试一下

  1. 在 SSMS 顶部点击:"连接 → 数据库引擎"

  2. 设置:

    • 身份验证:SQL Server 身份验证

    • 登录名:比如 sa

    • 密码:刚设置的新密码(例如 Lims@123

  3. 点"连接":

    • 能连上 → 重置成功 ✅

    • 连不上 → 要么密码输错,要么这个登录被禁用/锁定(见下一条)。

五、登录被禁用或锁定的两种常见情况(可选看)

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 → 右键登录名改密码 → 用新密码测试即可。
不会重启服务,不会影响正在运行的数据库,只是以后都要用新密码。

相关推荐
CQ_YM12 小时前
Linux进程基础
linux·服务器·进程
driver199912 小时前
hyperV装的windows11安装docker不支持虚拟化
运维·docker·容器
Alex Gram12 小时前
MySQL实时同步到SQL Server:技术方案与实现路径
数据库·mysql
_OP_CHEN12 小时前
【Git原理与使用】(五)Git 多人协作:从分支协作到冲突解决,团队开发效率翻倍秘籍
linux·运维·git·团队开发·运维开发·企业级组件·git多人协作
不穿格子的程序员13 小时前
Redis篇3——Redis深度剖析:内存数据的“不死之身”——RDB、AOF与混合持久化
数据库·redis·缓存·数据持久化·aof·rdb
企鹅侠客13 小时前
Linux性能调优:详解CPU使用率计算方式
linux·运维·服务器·性能调优
秋深枫叶红13 小时前
嵌入式第三十四篇——linux系统编程——进程
linux·服务器·数据库·学习
贡献者手册13 小时前
SQLite 的进阶版,面向边缘计算、嵌入式场景的高性能本地数据库【Turso Database】
数据库
TH_113 小时前
6、前台界面传递老数据,导致业务数据错误
数据库