欢迎光临
我们一直在努力

SQL Server连接故障解决:用户‘sa’登录失败 (18456) 完整排查指南

SQL Server连接故障解决:用户‘sa’登录失败 (18456) 完整排查指南

问题描述

在 Navicat 或其他数据库客户端中尝试使用 sa 账户连接 SQL Server 时,收到错误:

[28000] [Microsoft][ODBC Driver 18 for SQL Server][SQL Server]用户 ‘sa’ 登录失败。(18456)
在这里插入图片描述

此错误极为常见,通常并不意味着 SQL Server 安装失败,而是账户或身份验证模式配置问题。本文将带你一步步排查并解决。

环境说明

  • 操作系统:Windows 10/11
  • 数据库:SQL Server 2022(或其他版本)
  • 管理工具:Navicat Premium Lite / SSMS / sqlcmd
  • 身份验证方式:SQL Server 身份验证(使用 sa)

排查与解决步骤

第一步:确认 SQL Server 服务是否运行

  • 按 Win + R,输入 services.msc 并回车。
  • 在服务列表中找到 SQL Server (MSSQLSERVER)(若为默认实例)。
  • 查看状态是否为 “正在运行”。若未运行,右键点击“启动”。
    在这里插入图片描述
  • ✅ 服务正常运行是后续操作的基础。

    第二步:尝试用 Windows 身份验证连接

    如果 sa 登录失败,先检查 Windows 身份验证能否成功,这能帮我们判断 SQL Server 是否允许连接。

  • 打开 Navicat,点击左上角 “连接” → 选择 “SQL Server”。

  • 填写连接信息:

    • 连接名:任意(如“本地SQL Server-Windows”)
    • 主机:. 或 localhost
    • 身份验证:选 “Windows 身份验证”
      在这里插入图片描述
  • 点击 “连接测试”。

  • 结果分析:

    • ✅ 如果连接成功:说明 SQL Server 本身正常,问题出在 sa 账户或身份验证模式。
    • ❌ 如果失败:需检查防火墙、SQL Server 网络配置或服务是否允许远程连接(但本地一般默认允许)。

    第三步:通过 Windows 身份验证启用 sa 并设置密码

    若 Windows 身份验证成功,我们可以用它来修复 sa 账户。

  • 在 Navicat 中双击刚建立的 Windows 身份验证连接,打开数据库。

  • 点击 “新建查询”,输入以下 SQL:
    在这里插入图片描述

    — 启用 sa 账户
    ALTER LOGIN sa ENABLE ;
    GO
    — 设置新密码(请替换为你的密码)
    ALTER LOGIN sa WITH PASSWORD = '你的新密码' ;
    GO

  • 点击 “运行”(或按 F5)。
    记得把 ‘你的新密码’ 改成你自己想设置的密码:

  • 第四步:检查并修改身份验证模式

    即使 sa 已启用,若 SQL Server 处于“仅 Windows 身份验证模式”,sa 仍无法登录。需确保为“混合模式”。

  • 在同一个查询窗口执行以下 SQL,查看当前模式:

    EXEC xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\\Microsoft\\MSSQLServer\\MSSQLServer', N'LoginMode';

    • 返回值 1 = 仅 Windows 身份验证
    • 返回值 2 = 混合模式(允许 SQL Server 身份验证)
  • 若返回 1,执行以下 SQL 修改为混合模式:

    EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\\Microsoft\\MSSQLServer\\MSSQLServer', N'LoginMode', REG_DWORD, 2;

  • 第五步:重启 SQL Server 服务

    修改身份验证模式后必须重启服务才能生效。

  • 回到服务管理器(services.msc)。
  • 找到 SQL Server (MSSQLSERVER),右键点击 “重新启动”。
    在这里插入图片描述
  • 第六步:用 sa 和新密码测试连接

  • 在 Navicat 中新建一个 SQL Server 连接。
  • 填写信息:
    • 主机:. 或 localhost
    • 身份验证:选 “SQL Server 身份验证”
    • 用户名:sa
    • 密码:你刚才设置的密码
  • 点击 “连接测试”,应该显示成功。

  • 其他可能遇到的问题

    1. 使用 sqlcmd 命令行时遇到 SSL 错误

    如果使用 sqlcmd -S . -E 时报错:

    Sqlcmd: 错误: Microsoft ODBC Driver 18 for SQL Server : SSL 提供程序: 证书链是由不受信任的颁发机构颁发的。

    解决方法:添加 -C 参数信任服务器证书:

    sqlcmd -S . -E -C

    在这里插入图片描述

    2. 防火墙阻止 1433 端口

    若 Windows 身份验证也失败,可临时关闭防火墙测试。若关闭后成功,则需在防火墙中添加入站规则允许 TCP 1433 端口。

    3. sa 账户被锁定

    可执行以下 SQL 解锁:

    ALTER LOGIN sa WITH CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF;
    ALTER LOGIN sa WITH PASSWORD = '新密码' UNLOCK;


    总结

    • sa 登录失败 (18456) 大多数情况下不是安装失败,而是账户未启用或身份验证模式未配置为混合模式。
    • 使用 Windows 身份验证作为“管理入口”是解决问题的关键。
    • 永远不要相信所谓的“万能用户名和密码”,SQL Server 的安全性要求必须显式设置和启用账户。

    按照上述步骤操作后,你应该能顺利使用 sa 账户连接 SQL Server。

    赞(0)
    未经允许不得转载:171主机测评 » SQL Server连接故障解决:用户‘sa’登录失败 (18456) 完整排查指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址