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

本地SSMS无法查看SQL Server 2014链接服务器表的问题求助

排查建议:本地SSMS无法查看链接服务器表的问题

这种场景我实际排查过好几次,核心问题基本都绕不开Kerberos双跳身份验证或者本地连接配置的差异,给你梳理几个具体的排查方向,按顺序试下来应该能定位到原因:

  • 检查Kerberos双跳是否正常工作
    当你从本地SSMS连接SQL Server 2014(第一跳),再通过链接服务器访问SQL Server 2016(第二跳)时,NTLM协议不支持这种"双跳"身份传递,必须依赖Kerberos且配置了约束委派。

    1. 在2014服务器上打开SSMS,执行查询:SELECT auth_scheme FROM sys.dm_exec_connections WHERE session_id = @@SPID;,确认返回结果是KERBEROS。
    2. 在本地SSMS连接2014实例后,执行同样的查询,如果返回NTLM,说明本地连接没有使用Kerberos,双跳失败。
      解决方向:需要给SQL Server 2014的服务账号配置针对SQL Server 2016服务的约束委派,同时确保两台服务器都正确注册了SQL Server的SPN(比如MSSQLSvc/<服务器FQDN>:1433)。
  • 调整本地SSMS的连接配置
    有时候本地SSMS的连接参数会导致Kerberos协商失败:

    1. 尝试用2014实例的**完全合格域名(FQDN)**登录本地SSMS,而不是短机器名或IP地址——Kerberos依赖正确的DNS解析和SPN匹配,用FQDN更容易触发Kerberos认证。
    2. 在本地SSMS的"连接属性"中,切换到"其他连接参数",添加Integrated Security=SSPI;Kerberos Authentication=true;,强制使用Kerberos认证。
  • 验证链接服务器的安全设置
    打开SQL Server 2014实例的链接服务器属性,检查"安全性"选项卡:

    • 如果选择的是**"使用登录用户的安全上下文"**,那必须Kerberos双跳生效才能把你的域凭据传递到2016实例;如果双跳失败,链接服务器会用本地服务账号去访问2016,而这个账号可能没有权限。
    • 如果选择的是**"使用此安全上下文"**,那本地和服务器上的访问权限应该一致,这时候要确认这个指定的账号在SQL Server 2016实例上拥有至少VIEW DEFINITION权限,能查看数据库和表结构。
  • 检查本地客户端的Kerberos配置
    本地机器可能存在Kerberos票据获取失败的问题:

    1. 在本地命令行执行setspn -L <2014服务器名>和setspn -L <2016服务器名>,确认两台服务器都注册了正确的SQL Server SPN。
    2. 执行klist get MSSQLSvc/<2014服务器FQDN>:1433,检查本地是否能成功获取到Kerberos票据。如果返回错误,说明本地无法和域控制器协商Kerberos认证。
  • 排查网络/防火墙限制
    虽然你能看到链接服务器,但本地到SQL Server 2016的端口(默认1433)可能被防火墙拦截:

    • 在本地命令行执行telnet <2016服务器FQDN> 1433,测试端口是否连通。如果不通,需要调整本地或网络防火墙规则,允许本地机器访问2016实例的数据库端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:06:34