我们之前已经了解过MySQL、MongoDB数据库如何找回管理员密码,例如历史文章
MySQL忘记root密码处理
mongodb忘记密码怎么办
本文将找回SQL SERVER数据库的管理员密码。
想象一下这样的场景:公司的业务数据库运行在SQL Server 2008上,而唯一知道管理员密码的员工突然离职,交接文档中遗漏了这一关键信息。更糟糕的是,用于Windows身份验证的操作系统账户也因为各种原因无法登录。
数据库还在运行,业务正常进行,但管理员已经失去了控制权。这种“被锁在自己家门外”的感觉,是每个系统管理员最深的恐惧。
此时,数据库就像一个装满珍宝却失去钥匙的保险箱,任何突发问题都可能导致无法挽回的损失。时间一分一秒流逝,而解决窗口正在关闭。
针对此种情况,可以通过单用户模式启动SQL Server,然后重置sa密码或创建新的管理员账户来解决。而且有两种常用的方式(官方文档有5种方式),今天就来用实际案例来操作一下。
一、 使用net命令启动单用户模式
1. 停止SQL Server服务
以管理员身份打开命令提示符,输入如下命令
net stop MSSQLSERVER 如果是命名实例,请使用对应的服务名

2. 以单用户模式启动SQL Server
输入如下命令
net start MSSQLSERVER /mSQLCMD
成功后会显示"SQL Server (MSSQLSERVER) 服务已经启动成功"
3. 使用sqlcmd连接数据库
打开另一个管理员命令提示符窗口,输入命令:sqlcmd -E(-E表示使用Windows身份验证)

4. 重置sa管理员密码
生产环境建议调整为复杂的强密码,本次简单演示。
ALTER LOGIN sa WITH PASSWORD = 'sa';
GO
ALTER LOGIN sa ENABLE;
GO
EXIT
5. 恢复正常模式并测试
关闭所有命令提示符窗口,重启SQL Server服务:
net stop MSSQLSERVER
net start MSSQLSERVER
6. 验证是否可以登录
使用新创建的账户或重置后的sa密码登录

二、使用sqlservr.exe直接启动单用户模式
如果方法一无效,可以尝试直接运行sqlservr.exe:
1. 启动SQL SERVER数据库服务
找到SQL Server安装目录(默认为:C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn)或者直接全路径方式,以管理员身份打开命令提示符,切换到该目录,输入命令:
sqlservr -c -m

2. 使用sqlcmd连接数据库
在另一个命令提示符窗口执行sqlcmd连接并执行上述上述方法一中的SQL语句来重置管理员密码

3. 创建新用户
如果想创建新用户也可以,但是需注意密码策略,否则将报错,例如:

SQL Server密码必须包含以下4类字符中的3类:
建议的密码格式:大写+小写+数字+特殊字符,至少8位。
操作过程中如果有异常,对应的开启服务的窗口也会有错误信息

4. 恢复正常模式并测试
重置过密码或创建新用户后,在启动服务的命令行窗口里可以CTRL +C ,关闭服务

完成后即可验证是否可以登录。
三、防患未然,权限管理
通过本次找回密码的操作,给所有系统管理员敲响了警钟,后续也需要做好如下工作。
1. 密码管理策略
2. 访问权限规划
3. 应急流程建立
4. 技术债务清理
TIPS: 生产环境的数据库密码一定要妥善保管,虽然可以找回,但需要重启,影响数据库可用性。
今天的找回管理员密码的操作,你学会了么。