错误:无法生成SSPI上下文


8

当某人尝试连接到SQL Server实例时,出现错误:

不可能生成SSPI上下文。

昨天我们停电了(不知道该用英语怎么说),我不得不关闭服务器。

寻找答案,我发现了这一点:

SQL Server 2008连接问题:无法生成SSPI上下文

但这对我没有帮助,因为直到昨天他们都工作正常。我什么都不想改变。但是如果有必要,我会改变它。

Obs:我现在无法重新启动服务器。


编辑:自从我回答以来,我们没有任何错误。


我无法重新启动服务器,我们有500多个在线用户。我真的不知道该怎么办。互联网上没有任何有用的东西。
Racer SQL

1
从服务器本身设置组策略以自动更改用户的时间。如果您不想重新启动服务器以强制更改组策略,则可以使用gpupdate /force。更多关于这个美丽的主题在这里,但我会极力推荐这个任务交给服务器管理。
Nelz

Answers:


14

“无法生成SSPI上下文”是一个通用错误。它可能是由许多问题引起的,例如过时的密码,时钟漂移,Active Directory访问权限,无法注册SPN等。

没有解决此问题的方法。唯一的“解决方案”是根据KB811889和/或Kerberos错误疑难解答调查原因。在不了解原因的情况下,从随机Internet资源中应用一种解决方案,可能解决或可能无法解决问题,可能导致失败,也可能导致无法挽回的损害。


2
回答->在不了解原因的情况下,从随机Internet资源中应用一种解决方案,可能解决或未解决问题,可能导致挫败感,可能导致不可挽回的损失。响应->“我们将SQL SERVICE用户更改为一个“域管理员”。-ooooo-kaay然后。
matao

3

我们将更改为SQL SERVICE userDomain Admin”。

我进行了一些研究,以了解为什么会发生这种情况。它说,当您关闭服务时,您需要一个具有特权的帐户来创建新的SPN(再次打开时)。如果启动没有此服务的服务,它将显示在“无法生成SSPI上下文”中。

我们正在更改系统帐户的特权。

希望它可以帮助某人。


8
服务帐户的良好做法是为他们提供尽可能少的特权。为您的服务帐户域管理员指定权限与该方法相反-从安全的角度来看,强烈建议您不要这样做。
迈克

2

从PROD提取数据库并将其恢复为质量检查后,我们遇到了这个问题。我们的应用程序在三台服务器上调用了三个数据库,除此之外并不复杂。

事实证明,虚假的SPN(服务主体名称)妨碍了应该在其下运行连接的服务帐户。我们使用“程序文件”>“ Microsoft Kerberos Config Manager”发现了这一点。

短期修复是使用SQL Server配置管理器,并将SQL Server和SQL Server代理连接从服务帐户更改为“使用内置帐户”下的“ LocalSystem”。


1

无法生成SSPI上下文可能恰恰意味着这一点。客户端连接到SQL Server时,它将使用一种生成方法,其中包括服务类型(MsSQLsvr)服务器FQDN和端口。它使用DNS生成服务器名称,因此如果由于CNAME或主机文件等原因而错误地解析了该名称,则生成将失败。Ping所需的服务器,然后查看得到的答复。如果不是SQL Server的FQDN,则将错误生成SPN,从而导致此错误。


1

在某些情况下,由于SPN设置,您将收到此错误。例如,如果您要对新服务器进行灾难恢复测试,则在连接到SQL Server时可能会收到SSPI错误。更奇怪的是,您可能可以使用SQL Server Management Studio进行连接,但无法通过ODBC或OLEDB进行连接。可能有一个临时解决方法,可能会使您可以进入数据库。

解决方法:在尝试连接到SQL Server的每台客户端计算机上,在每个工作站的主机文件中创建一个条目。尚不确定用于解决该问题的确切机制,但可能是使用它会覆盖对SPN的需求。

尽管不能保证在所有情况下都可以解决此问题,但很可能会使您重新启动并运行。这不应被视为永久性修复。您应该在理想情况下解决SPN或其他问题。但是,如果您在运行不受支持的操作系统的旧Windows计算机上遇到问题,或者只是在进行灾难恢复测试的概念验证,这应该可以使您保持点亮状态或恢复生产并运行。


我只想重申,这是一种解决方法。解决方法不是永久性修复。如果您以后希望减少问题的发生,就应该解决与SPN有关的根本问题。
詹森·盖格

将机器名称映射到机器IP的条目?
Bill Greer

1

我遇到了此问题,已通过在服务器的AD中删除计算机帐户的属性中的SPN条目来解决此问题

在“ AD用户和计算机”中找到机器帐户(“高级”视图)

在此处输入图片说明

然后删除servicePrincipalName中的两个条目,用于MSSQLSvc

在此处输入图片说明


0

我有一个类似的问题。我最终不得不从ADSIEdit中计算机帐户上的SPN信息中删除条目。

删除条目后,我重新启动了SQL服务,并向我创建的域资源帐户注册了SPN。然后,我可以远程访问SQL Server。


0

对我来说,解决方案是使用以下命令以域用户身份运行SQL Studio:

Runas / user:OtherDomain \ User SSMS.exe


0

我最近才遇到这个问题。我以NT SERVICE帐户运行,当我切换为使用服务帐户时,无法再使用具有计算机名称或FQDN的SSMS进行连接。我可以连接IP地址。经过一番挖掘,我发现Active Directory中SQL实例的SPN已在计算机上注册。一旦删除了它,然后将其添加到服务帐户,然后重新启动了SQL计算机,一切都会按预期进行。如果需要,很高兴提供更多详细信息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.