SQL Server的Windows身份验证和sa登录都被禁用的完美解决方法

 更新时间:2025年09月19日 11:22:27   作者:夜`羽  
当SQL Server的Windows账户被误删且sa禁用时,会导致登录失败,解决方法是通过单用户模式启动服务,赋予管理员权限,使用SQLCMD重置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身份验证被禁用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL2000中的默认sa帐号的修改与删除方法

    SQL2000中的默认sa帐号的修改与删除方法

    MSSQL默认的sa很少有人改动,但是经常有人用工具扫描sa账户,并且爆破密码
    2013-02-02
  • 日常收集整理SqlServer数据库优化经验和注意事项

    日常收集整理SqlServer数据库优化经验和注意事项

    本文是小编日常收集整理SqlServer数据库优化经验和注意事项,详细介绍了SQL语句优化的基本原则,包括索引、查询和游标的使用等
    2015-11-11
  • SQLServer设置客户端使用IP地址登录的图文详解

    SQLServer设置客户端使用IP地址登录的图文详解

    这篇文章主要介绍了SQLServer设置客户端使用IP地址登录的图文详解,本文通过图文并茂的形式给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • SQL Server 2016的数据库范围内的配置详解

    SQL Server 2016的数据库范围内的配置详解

    这篇文章主要介绍了SQL Server 2016的数据库范围内的配置详解的相关资料,需要的朋友可以参考下
    2016-03-03
  • 获取星期几的名称

    获取星期几的名称

    两个自定义函数,一个是返回一个Table,另一个是直接返回名称
    2012-01-01
  • 关于SQL查询语句关键字方法

    关于SQL查询语句关键字方法

    这篇文章主要介绍了关于SQL查询语句关键字方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • SQLServer中Partition By及row_number 函数使用详解

    SQLServer中Partition By及row_number 函数使用详解

    partition by关键字是分析性函数的一部分,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,本文给大家介绍SQLServer中Partition By及row_number 函数使用详解,需要的朋友参考下
    2015-11-11
  • 安装SQL Server2019详细教程(推荐!)

    安装SQL Server2019详细教程(推荐!)

    SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统(RDBMS),现在是全世界主流数据库之一,下面这篇文章主要给大家介绍了关于安装SQL Server2019详细教程,需要的朋友可以参考下
    2022-11-11
  • SQL Server定期收缩日志文件的详细步骤

    SQL Server定期收缩日志文件的详细步骤

    事务日志记录着在相关数据库上的操作,同时还存储数据库恢复(recovery)的相关信息,收缩日志的原因有很多种,有些是考虑空间不足,有些则是应用程序限制导致的,本文将给大家介绍SQL Server定期收缩日志文件的详细步骤,需要的朋友可以参考下
    2024-06-06
  • 详解SqlServer 表达式(expression)

    详解SqlServer 表达式(expression)

    表达式可以是单个常量,变量,列或标量函数。运算符可用于将两个或多个简单表达式连接到一个复杂的表达式中。这篇文章主要介绍了SqlServer 表达式(expression)的语法代码详解,需要的朋友可以参考下
    2019-11-11

最新评论