目标主体名称不正确。无法生成SSPI上下文

问题说明:
sqlserver运行在域用户下,服务器也在域中,通过主机名称或者服务名称链接时就报如下错误,通过IP地址链接是正常的。
在这里插入图片描述
测试数据库连接工具:
右键新建一个txt文件,将txt文件后缀名修改成udl,解决如下图:由1的样子变成2的样子为正确。
在这里插入图片描述
下图就是使用测试界面,有问题也会提示 无法生成SSPI上下文 错误
在这里插入图片描述

问题解决方法:
方法一:
1. 检查主机名和服务名称解析是否正常
2. 使用setspn 命令工具修复spn错误 ,setspn命令官方帮助文档了解spn是什么
删除错误spn,保留正确spn,命令如下:

setspn -D MSSQLSvc/<服务名或者机器名称.domainname>:1433 <servername>
setspn -D MSSQLSvc/<服务名或者机器名称.domainname> <servername>

这个解决方法在网上是最常见的,我试过这个解决方案是有效,但是删错误是spn很费解删除不彻底。

方法二:

  1. 检查主机名和服务名称解析是否正常
  2. 回忆一下,你是否有更换过sqlserver服务账号(如下图:)
    在这里插入图片描述
    假设更护过sqlserver服务账号,一定要想起之前使用过的账号是哪个,否则你就只能AD域中,当您AD域中账号过多时,一个个账号去检查spn属性字段,简直就是大海捞针,有时您看见了不一定就认为是错误的,所以要仔细看仔细分析。
    手动删除spn方法:
    在这里插入图片描述
    这个是删除dbadmin这个账号上spn操作方式,注意图中的第4步不要删错了(要根据数据库服务器主机名称来删除)。
    spn会在两种账号中出现,即user和computer这两种类型账号,computer类型就是数据库服务器主机名称。
    在这里插入图片描述
    觉得windows server自带ADSI编辑器不好用的可以使用Windows Sysinternals工具集中《ADExplorer.exe》工具,全部工具官方下载地址 单个工具官方下载地址

方法三:
使用Microsoft® Kerberos Configuration Manager for SQL Server® 工具修复sqlserver spn错误官方下载地址使用方式自己看官方文档。
将工具安装到数据库服务器上,在 C:\Program Files\Microsoft\Kerberos Configuration Manager for SQL Server 此目录中找到 KerberosConfigMgr.exe 此程序,用此程序重新生成SPN 列表。 在命令窗口下执行此命令 KerberosConfigmgr.exe -q -l 出现如下图结果我正确。
在这里插入图片描述

软件使用说明文档

要安装:

下载与计算机的操作系统体系结构匹配的 32 位或 64 位版本的 Kerberos 配置管理器 (KCM) 安装程序。
单击"打开"以立即启动安装,或单击"保存"以将安装.msi到磁盘并在以后安装。
接受此工具的许可证期限。
单击"下一步"以完成安装。
默认情况下,此应用程序安装在 %SystemDrive%:[程序文件]微软\Kerberos SQL Server 配置管理器下。

要启动 KCM 工具:

安装成功后,双击KerberosConfigmgr .exe以启动应用程序。
若要解决 SQL Server 的连接问题,请使用具有该计算机的用户权限的域用户帐户连接到目标计算机。
若要解决 SQL 报告服务的连接问题,请使用具有该计算机管理员级别权限的域用户帐户连接到目标计算机。

要从命令行生成 SPN 列表,请:

打开命令行窗口。
重要提示:要解决 SQL 报告服务的连接问题,请以管理员身份启动命令行窗口。
切换到 KerberosConfigmgr .exe的文件夹。
类型 KerberosConfigmgr.exe -q -l
有关更多命令行选项,请键入KerberosConfigmgr.exe -h

要保存服务器的 Kerberos 配置信息,请:

连接到目标 Windows 计算机。
单击工具栏上的"保存"按钮。
指定要将文件保存到的位置。它可以在本地驱动器或网络共享上。
该文件将保存为 XML。

要从已保存的文件中查看服务器的 Kerberos 配置信息,请:

单击工具栏上的"加载"按钮。
打开 Kerberos 配置管理器生成的 XML 文件。

要生成脚本以从命令行修复 SPN,请:

单击SPN 条目的"生成"按钮。
生成脚本可由具有在服务器上修复 SPN 权限的用户使用。

要查看 KCM 工具的日志文件,请:

默认情况下,每次执行应用程序时生成日志文件,并放置在用户的应用程序数据文件夹中:%APPDATA%=微软=KerberosConfigMgr

获取帮助的选项:

将鼠标光标悬停在工具提示的命令上。
运行KerberosConfigmgr .exe命令行运行 0+h。
单击工具栏中的"帮助"按钮。

总结

这三修复问题的方法,是都可以解决《无法生成SSPI上下文》问题的,有些时候您要自己分析情况使用哪种方式修复spn错误,三种方式可以一起使用,基本上完全可以解决问题。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐