You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL认证登录查询SQL Server链接服务器报Authentication failed错误

问题根因

从错误日志可以直接定位:访问Server1失败的账号是NT Service\MSSQL$SQLEXPRESS,这是Server2(SQLEXPRESS实例)的默认服务启动虚拟账号。
Windows身份验证登录Server2时链接查询正常,是因为Windows登录的安全上下文可在同机实例间直接传递;而用SQL认证账号(比如sa)登录时,当前链接服务器的安全配置没有给这类SQL登录配置对应的远程访问凭据,SQL Server会自动回退使用自身服务启动账号尝试认证,Server1上既不存在这个虚拟账号的登录条目,也没有给它分配访问权限,就会触发你看到的认证失败报错,日志里的Error: 18456 Severity: 14 State: 5也对应「登录名不存在」的错误类型,和日志描述完全匹配。

可落地解决方案

三选一即可,按实际运维场景选择:

  • 方案1:单独配置登录映射(生产环境首选,权限最小)
    1. 打开Server2上对应链接服务器的属性面板,切换到「安全性」标签页
    2. 在本地登录映射区域点击添加:本地登录选择sa,如果Server1上的sa账号密码和Server2完全一致,直接勾选「模拟」即可;如果不一致,就填写Server1上有对应查询权限的SQL账号的用户名、密码
    3. 面板下方「未在映射列表中的登录」选项,不要选「使用登录当前安全上下文」,建议选「不建立连接」避免未授权访问
    4. 保存配置后重新用sa登录测试即可。
  • 方案2:给服务账号直接授权(同机多实例运维场景适用)
    1. 连接到Server1实例,进入「安全性-登录名」新建登录
    2. 登录名填写NT Service\MSSQL$SQLEXPRESS,注意这是本地系统虚拟账号,搜索时选择本地实体,不要搜索域目录
    3. 给这个账号分配对应业务库的查询、读写等必要权限,保存后即可正常访问。
  • 方案3:配置固定访问账号(测试环境首选,配置最简单)
    在链接服务器安全性面板直接选择「使用此安全上下文建立连接」,填入Server1上有足够权限的账号(Windows/SQL认证均可)和密码,保存后所有本地账号访问这个链接服务器都会统一使用这个凭据,配置简单但权限粒度粗,不建议生产环境用。
排错注意点
  • 同机部署的SQL实例默认走共享内存协议通信,不需要排查防火墙、网络端口问题
  • 用模拟方式映射SQL账号时,本地和远程实例的对应账号密码必须完全一致,否则模拟会失败
  • 不要给链接服务器配置不必要的高权限账号,避免越权访问风险

内容的提问来源于stack exchange,提问作者postcreator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:57:20