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

如何通过Python从Linux连接仅支持AD认证的SQL Server?

报错根因

SSPI Provider: Server not found in Kerberos database (851968) 报错和你本地用户的Kerberos凭证无关,是Active Directory(AD)中缺少SQL Server服务对应的服务主体名称(SPN),或者SPN配置与你连接时使用的服务地址不匹配。

排查修复步骤
  • 确认SQL Server服务对应的SPN格式是否正确
    你连接的SQL Server实例需要在AD中注册2条SPN,默认端口1433场景下格式为:
    MSSQLSvc/servername.fqdn.com
    MSSQLSvc/servername.fqdn.com:1433
    若SQL Server使用非默认端口,需将1433替换为实际端口号。
  • 查询AD中现有SPN配置
    在域控或已加入域的Windows设备上,使用域管理员权限执行命令:
    setspn -L <SQL Server服务运行时使用的域账号名>
    若返回结果中没有上述两条SPN,手动执行注册:
    setspn -S MSSQLSvc/servername.fqdn.com <SQL服务运行域账号>
    setspn -S MSSQLSvc/servername.fqdn.com:1433 <SQL服务运行域账号>
  • 校验本地配置
    1. 确认/etc/krb5.conf中的域配置(Realm)与AD实际配置大小写完全一致,Kerberos对大小写敏感
    2. 执行nslookup servername.fqdn.com确认DNS解析结果与SQL Server实际IP一致,不要使用hosts文件硬绑定IP
    3. 你当前使用的ODBC连接字符串配置正确,无需修改,注意不要把Server字段换成短域名或IP,必须用完整FQDN
  • 生效验证
    配置完成后执行kdestroy清空本地Kerberos缓存,重新执行kinit <username>获取凭证后再尝试连接即可。
补充说明

如果SQL Server服务使用本地系统账号/网络服务账号运行,服务启动时会自动尝试注册SPN;如果使用自定义域账号运行,必须手动注册SPN才能使用Kerberos可信连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:03:02