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

SQL Server链接服务器登录失败(错误18456)及通信故障求助

解决SQL Server链接服务器通信故障与登录失败问题

核心问题分析

当前遇到的NT AUTHORITY\ANONYMOUS LOGON登录失败(Error 18456)是链接测试失败的直接原因,而通信故障(Error 16389、10004)和msdb恢复提示可能关联到服务器身份验证、数据库状态或网络配置问题。以下是分步修复方案:


一、修复身份验证与登录失败问题

1. 确认Kerberos SPN配置

跨服务器使用当前安全上下文登录依赖Kerberos身份验证,需确保两台SQL Server的服务主体名称(SPN)正确注册:

  • 运行管理员权限的命令提示符,执行以下命令检查SPN:
    setspn -L <SQL服务账户名>
    
    需确认输出包含MSSQLSvc/<服务器完整FQDN>:<端口>和MSSQLSvc/<服务器NetBIOS名>:<端口>两种格式的SPN。
  • 若缺失SPN,执行以下命令添加(替换占位符):
    setspn -A MSSQLSvc/<服务器完整FQDN>:<端口> <SQL服务账户名>
    setspn -A MSSQLSvc/<服务器NetBIOS名>:<端口> <SQL服务账户名>
    
  • 检查是否有重复注册的SPN,避免冲突:
    setspn -X
    

2. 调整本地安全策略权限

  • 打开本地安全策略,导航至本地策略 -> 用户权限分配:
    • 确保SQL服务账户拥有**“允许计算机和用户账户被信任以便进行委派”**权限(若使用约束委派,需指定委派到目标SQL Server服务)。
    • 确认**“从网络访问此计算机”权限包含域用户组和SQL服务账户,“拒绝从网络访问此计算机”**列表中无相关账户。

二、解决通信故障与msdb恢复问题

1. 验证并修复msdb数据库状态

  • 在目标SQL Server执行以下查询,确认msdb状态:
    SELECT name, state_desc FROM sys.databases WHERE name = 'msdb';
    
    若状态不为ONLINE,执行以下操作恢复:
    -- 切换到单用户模式
    ALTER DATABASE msdb SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    -- 恢复联机
    ALTER DATABASE msdb SET ONLINE;
    -- 切换回多用户模式
    ALTER DATABASE msdb SET MULTI_USER;
    
  • 查看目标服务器的SQL Server错误日志,定位msdb恢复失败的具体原因(如磁盘空间不足、日志文件损坏),针对性清理磁盘或修复日志。

2. 排查网络与防火墙配置

  • 测试两台服务器的网络连通性:
    • ping对方服务器的完整FQDN,确保DNS解析正常。
    • 使用telnet测试SQL端口(默认1433)和DTC端口(默认135及动态端口范围)是否开放:
      telnet <目标服务器FQDN> 1433
      telnet <目标服务器FQDN> 135
      
  • 配置Windows防火墙:
    • 允许SQL Server服务(sqlservr.exe)、DTC服务(msdtc.exe)的入站和出站流量。
    • 若使用第三方防火墙,需同步开放对应端口和服务。

3. 重置并重新配置DTC

  • 卸载并重新安装DTC服务(管理员权限命令提示符):
    net stop msdtc
    msdtc -uninstall
    msdtc -install
    net start msdtc
    
  • 重新配置Component Service中的Local DTC属性:
    • 打开组件服务,导航至计算机 -> 我的电脑 -> 分布式事务协调器 -> 本地DTC,右键选择属性。
    • 切换到安全选项卡,勾选:网络DTC访问、允许远程客户端、允许远程管理、允许入站、允许出站。
    • 启用XA事务,身份验证级别选择“无要求”或“相互验证”,保存设置后重启DTC服务。

三、验证链接服务器配置

  • 重建链接服务器时,确保安全选项卡选择**“使用登录名的当前安全上下文”**,并清空“本地服务器登录到远程服务器的映射”列表(避免冲突规则)。
  • 执行以下命令测试链接:
    EXEC sp_testlinkedserver '<你的链接服务器名>'
    
    根据返回的错误信息进一步调整配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 15:15:31