SQL Server 禁用Windows身份登录时忘记其他账号如sa登录密码后重置密码
一 、事故造成及结果显示
在以Windows身份登录后执行以下脚本或进行如图设置(以本机【DESKTOP-5FH0BTE\Admin】为例)
ALTER LOGIN [DESKTOP-5FH0BTE\Admin] DISABLE GO
症状特征
而此时您没有任何一个用户的信息或者已知用户名不知道密码,总不能再重装一下SqlServer吧,所以您需要进行后续操作
首先您需要确保您有管理员权限,如果没有管理员权限建议您重装系统然后重装SqlServer,好了闲言少叙,请看下文
二、创建用户比如xmen
打开【控制面板】--->【用户账户】--->【用户账户】--->【管理用户】--->【在电脑设置中添加新用户】
或【控制面板】--->【所有控制面板项】--->【用户帐户】--->【管理帐户】--->【在电脑设置中添加新用户】
以Win11为例如下图所示
创建完成后刷新后如下图
选中后显示如下图,点击更改账户类型
选中管理员,点击更改账户类型
完成后,注销此用户,切换其他用户【xmen】登录,登录时需要简单的配置,可以直接放过,因为我们会过河拆桥直接删掉这个账号的
注意:此时您已经是xmen了。
三、单用户启动SqlServer服务
开始里面搜索并打开【服务】或运行中【Services.msc】等打开,地位到以SQL开头的服务
确保将SqlServer的所有访问服务及程序全部关掉,然后打开需要操作的服务如图所示
关掉所有服务后,将SqlServer数据库服务执行路径打开复制,后面有用免得再去敲,如我的执行为以下内容
"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLE22\MSSQL\Binn\sqlservr.exe" -sMSSQLE22
以管理员身份打开cmd,在以上命令行基础上后面添加【 /m /f】执行
"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLE22\MSSQL\Binn\sqlservr.exe" -sMSSQLE22 -m -f
显示如下最后英文信息即可为已完成单用户模式启动了,如果有其他信息如开启了SqlServerManagementStudio连接sa失败等,如下图
此时Ctrl+C停止执行,y退出,关闭所有连接后,然后重新执行,显示无连接的状态,打开SqlServerManagementStudio然后以Windows身份登录即可登录,然后执行如下脚本或设置即可
四、还原设置恢复用户合法权益
以管理员身份打开cmd,在以上命令行基础上后面添加【 /m /f】执行
"C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLE22\MSSQL\Binn\sqlservr.exe" -sMSSQLE22 -m -f
使用SqlServerManagementStudio登录是可能有时候登录不成功,只需要在cmd上重复Ctrl+C和上述命令直到以下用户可登录
重复开启关闭后,总能出现如下图所示内容,执行Sql脚本或者进行设置即可完成此内容。
ALTER LOGIN [DESKTOP-5FH0BTE\Admin] ENABLE G0
修改sa账号还是创建新账号不再赘述,此时最初的坑已经填完,剩下就是收尾工作了
五、收尾总结
注销xmen账号,然后切换回原账号如本机是【Admin】,然后过河拆桥删除【xmen】账号,启动服务上述关闭的服务启动或重启电脑等自动启动后再进行后续工作设置
不难看出SqlServer的Windows认证机制是基于Administers管理组的,所以整个操作下来的思路很清晰的就是创建另一个管理员账号代替禁用的管理员账号,然后用单用户模式的Windows身份完成后续权限的分配设置。