餐霞行者 發表於 2025-9-19 11:22:27

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

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">单用户管理员模式启动</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1. 停止 SQL Server 服务</a></li><li><a href="#_lab2_0_1">2. 以单用户模式启动 SQL Server</a></li><li><a href="#_lab2_0_2">3.通过 SSMS 连接并修复账户</a></li><ul class="third_class_ul"><li><a href="#_label3_0_2_0">解决方案:使用 SQLCMD 命令行工具连接(推荐)</a></li></ul><li><a href="#_lab2_0_3">4. 重启服务</a></li><ul class="third_class_ul"></ul></ul></ul></div><p>当 SQL Server 的 Windows 身份验证账户被误删且 sa 登录同时被禁用时,会导致完全无法登录数据库。这种&ldquo;双重锁定&rdquo;状态通常源于两个操作叠加:</p>
<ul><li><strong>安装时选择&ldquo;Windows 身份验证模式&rdquo;</strong>:默认禁用 sa 账户;</li><li><strong>后续误删 Windows 登录账户</strong>:导致唯一访问途径失效.</li></ul>
<p class="maodian"><a name="_label0"></a></p><h2>单用户管理员模式启动</h2>
<p>此方法通过特殊启动模式赋予本地管理员 sysadmin 权限,适合大多数场景。</p>
<p><strong>操作步骤</strong>:</p>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>1. 停止 SQL Server 服务</h3>
<p>以管理员身份运行命令提示符(CMD)或 PowerShell。</p>
<div class="jb51code"><pre class="brush:bash;">net stop MSSQLSERVER# 若为默认实例;命名实例需替换为实例名</pre></div>
<p><span>注意</span> MSSQLSERVER 可能被替换&nbsp;</p>
<p>如果输入net stop MSSQLSERVER 失败&nbsp; 需要查询实例名&nbsp;</p>
<p>1.1 win + R 输入&nbsp;services.msc&nbsp; 点击确定</p>
<p>1.2 找到 SQL&nbsp; Server (某某) 括号中的<span>某某</span>就是实例名&nbsp;</p>
<p>1.3&nbsp;打开cmd 输入net stop MSSQL$某某&nbsp; 应该就成功啦</p>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>2. 以单用户模式启动 SQL Server</h3>
<div class="jb51code"><pre class="brush:bash;">cd "C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn"# 进入安装目录
sqlservr.exe -m -f# -m 启用单用户模式,-f 最小配置启动</pre></div>
<p>保持此窗口运行,不要关闭。</p>
<p><span>注意:</span> MSSQL<span>XX</span>.MSSQLSERVER&nbsp; 这里的<span>XX&nbsp;</span><span>需要按照实际目录替换</span></p>
<p>在运行这一步时可能会遇到错误:</p>
<p>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</p>
<p>这个错误表明 SQL Server 的实例配置信息已损坏或丢失,通常是由于注册表项损坏或文件系统权限问题导致。</p>
<p><strong>尝试手动指定实例启动:</strong></p>
<p>2.1&nbsp; 首先&nbsp; # 进入Binn目录(<span>XX</span>根据实际版本修改路径)</p>
<div class="jb51code"><pre class="brush:bash;">cd "C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn"</pre></div>
<p>2.2&nbsp; 其次&nbsp; # 使用-s参数指定实例名(注意实例名大小写敏感)</p>
<div class="jb51code"><pre class="brush:bash;">sqlservr.exe -m -f -s MSSQLSERVER</pre></div>
<p><span>将&nbsp;<code>MSSQLSERVER</code>替换</span>为你的实例名&nbsp; 如: MSSQL$某某&nbsp;</p>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>3.通过 SSMS 连接并修复账户</h3>
<p>3.1&nbsp; 打开 SQL Server Management Studio (SSMS)。</p>
<p>3.2&nbsp; 服务器名输入&nbsp;<code>localhost</code>,身份验证选择&nbsp;<strong>Windows 身份验证</strong>。</p>
<p>3.3&nbsp; 点击&ldquo;连接&rdquo;,若弹出登录框点击&ldquo;取消&rdquo;,然后在菜单栏选择&ldquo;新建查询&rdquo;。</p>
<p>执行以下sql命令:</p>
<div class="jb51code"><pre class="brush:sql;">ALTER LOGIN sa ENABLE;-- 启用 sa 账户
ALTER LOGIN sa WITH PASSWORD = 'YourNewPassword';-- 设置 sa 密码
CREATE LOGIN FROM WINDOWS;-- 重建 Windows 账户
ALTER SERVER ROLE sysadmin ADD MEMBER ;-- 授予管理员权限
GO</pre></div>
<p>这里的&nbsp; PASSWORD = &#39; YourNewPassword &#39; 需要换成你自己重新设定的密码</p>
<p>YourHostName&nbsp; 替换成&nbsp; 计算机名&nbsp; (打开cmd&nbsp; 输入&nbsp; <strong>hostname&nbsp; </strong>命令查看)</p>
<p>可能会遇到如下<span>错误</span>:</p>
<p>使用者&#39;CN\...&#39;的登入失败,原因服务器为单一使用者模式.此时只有一位管理员可以链接.(MicrosoftSql server , 错误:18461)</p>
<p>出现此错误是因为 SQL Server 在单用户模式下<strong>只允许一个管理员连接</strong>,而 SSMS 在连接时可能会尝试建立多个连接(如对象资源管理器、查询窗口等)。以下是详细解决方法:</p>
<p class="maodian"><a name="_label3_0_2_0"></a></p><h4>解决方案:使用 SQLCMD 命令行工具连接(推荐)</h4>
<p>保持单用户模式窗口运行(不要关闭sqlservr.exe -m -f的窗口)</p>
<p>以管理员身份打开新命令提示符:</p>
<div class="jb51code"><pre class="brush:bash;">sqlcmd -S localhost\SQLEXPRESS -E</pre></div>
<p><code>-S localhost\SQLEXPRESS</code>:指定命名实例</p>
<p><code>-E</code>:使用 Windows 身份验证</p>
<p><strong>在 SQLCMD 中执行修复命令</strong>:</p>
<div class="jb51code"><pre class="brush:sql;">1&gt; ALTER LOGIN sa ENABLE;
2&gt; GO
1&gt; ALTER LOGIN sa WITH PASSWORD = 'YourStrongPassword!123';
2&gt; GO
1&gt; CREATE LOGIN FROM WINDOWS;
2&gt; GO
1&gt; ALTER SERVER ROLE sysadmin ADD MEMBER ;
2&gt; GO
1&gt; QUIT</pre></div>
<p>如按下回车,没出现任何错误代表成功.</p>
<p class="maodian"><a name="_lab2_0_3"></a></p><h3>4. 重启服务</h3>
<p>4.1&nbsp; 在单用户模式窗口按 <strong>ctrl + c</strong> 停止服务</p>
<p>4.2&nbsp; 重新以正常模式启动:</p>
<div class="jb51code"><pre class="brush:plain;">net start MSSQLSERVER# 若为默认实例;命名实例需替换为实例名</pre></div>
<p>最后就可以打开 ssms&nbsp;连接&nbsp; 登录 sa 啦!</p>
頁: [1]
查看完整版本: SQL Server的Windows身份验证和sa登录都被禁用的完美解决方法