SQL Server的Windows身份验证和sa登录都被禁用的完美解决方法
当 SQL Server 的 Windows 身份验证账户被误删且 sa 登录同时被禁用时,会导致完全无法登录数据库。这种“双重锁定”状态通常源于两个操作叠加:
- 安装时选择“Windows 身份验证模式”:默认禁用 sa 账户;
- 后续误删 Windows 登录账户:导致唯一访问途径失效.
单用户管理员模式启动
此方法通过特殊启动模式赋予本地管理员 sysadmin 权限,适合大多数场景。
操作步骤:
1. 停止 SQL Server 服务
以管理员身份运行命令提示符(CMD)或 PowerShell。
net stop MSSQLSERVER # 若为默认实例;命名实例需替换为实例名
注意 MSSQLSERVER 可能被替换
如果输入net stop MSSQLSERVER 失败 需要查询实例名
1.1 win + R 输入 services.msc 点击确定
1.2 找到 SQL Server (某某) 括号中的某某就是实例名
1.3 打开cmd 输入net stop MSSQL$某某 应该就成功啦
2. 以单用户模式启动 SQL Server
cd "C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn" # 进入安装目录 sqlservr.exe -m -f # -m 启用单用户模式,-f 最小配置启动
保持此窗口运行,不要关闭。
注意: MSSQLXX.MSSQLSERVER 这里的XX 需要按照实际目录替换
在运行这一步时可能会遇到错误:
your sql server installation is either corrupt or has been tampered with (error getting instance id from name ) please uninstall then re-run setup to correct this problem
这个错误表明 SQL Server 的实例配置信息已损坏或丢失,通常是由于注册表项损坏或文件系统权限问题导致。
尝试手动指定实例启动:
2.1 首先 # 进入Binn目录(XX根据实际版本修改路径)
cd "C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn"
2.2 其次 # 使用-s参数指定实例名(注意实例名大小写敏感)
sqlservr.exe -m -f -s MSSQLSERVER
将 MSSQLSERVER替换为你的实例名 如: MSSQL$某某
3.通过 SSMS 连接并修复账户
3.1 打开 SQL Server Management Studio (SSMS)。
3.2 服务器名输入 localhost,身份验证选择 Windows 身份验证。
3.3 点击“连接”,若弹出登录框点击“取消”,然后在菜单栏选择“新建查询”。
执行以下sql命令:
ALTER LOGIN sa ENABLE; -- 启用 sa 账户 ALTER LOGIN sa WITH PASSWORD = 'YourNewPassword'; -- 设置 sa 密码 CREATE LOGIN [YourHostName\Administrator] FROM WINDOWS; -- 重建 Windows 账户 ALTER SERVER ROLE sysadmin ADD MEMBER [YourHostName\Administrator]; -- 授予管理员权限 GO
这里的 PASSWORD = ' YourNewPassword ' 需要换成你自己重新设定的密码
YourHostName 替换成 计算机名 (打开cmd 输入 hostname 命令查看)
可能会遇到如下错误:
使用者'CN\...'的登入失败,原因服务器为单一使用者模式.此时只有一位管理员可以链接.(MicrosoftSql server , 错误:18461)
出现此错误是因为 SQL Server 在单用户模式下只允许一个管理员连接,而 SSMS 在连接时可能会尝试建立多个连接(如对象资源管理器、查询窗口等)。以下是详细解决方法:
解决方案:使用 SQLCMD 命令行工具连接(推荐)
保持单用户模式窗口运行(不要关闭sqlservr.exe -m -f的窗口)
以管理员身份打开新命令提示符:
sqlcmd -S localhost\SQLEXPRESS -E
-S localhost\SQLEXPRESS:指定命名实例
-E:使用 Windows 身份验证
在 SQLCMD 中执行修复命令:
1> ALTER LOGIN sa ENABLE; 2> GO 1> ALTER LOGIN sa WITH PASSWORD = 'YourStrongPassword!123'; 2> GO 1> CREATE LOGIN [BUILTIN\Administrators] FROM WINDOWS; 2> GO 1> ALTER SERVER ROLE sysadmin ADD MEMBER [BUILTIN\Administrators]; 2> GO 1> QUIT
如按下回车,没出现任何错误代表成功.
4. 重启服务
4.1 在单用户模式窗口按 ctrl + c 停止服务
4.2 重新以正常模式启动:
net start MSSQLSERVER # 若为默认实例;命名实例需替换为实例名
最后就可以打开 ssms 连接 登录 sa 啦!
到此这篇关于SQL Server的Windows身份验证和sa登录都被禁用的解决方法的文章就介绍到这了,更多相关sqlserver windows身份验证被禁用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQLServer中Partition By及row_number 函数使用详解
partition by关键字是分析性函数的一部分,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,本文给大家介绍SQLServer中Partition By及row_number 函数使用详解,需要的朋友参考下2015-11-11


最新评论