2

我试图弄清楚发生了什么。这是我们的设置:我们有四个相互复制的 SQL 服务器。

我们将一个新用户添加到 Windows Active Directory,并将他们添加到我们已经使用多年的 SQL Server 中的组中。

新用户在尝试使用 Windows 身份验证进行身份验证时会在主题行中返回该错误。但是,以前在 Active Directory 中的任何用户都可以正常工作。

有一次,我让 SQL Server “赶上了”,因为我们有一组用户因为这个错误而无法登录。我对 SPN 进行了一些更改,最终使它没有人可以登录。然后我意识到 SPN 的外观并修复了它。然后我猜发生了一些神奇的事情,这些用户能够进行身份验证。我认为它已修复,但显然不是因为我们必须添加一个新用户并且他们无法进行身份验证。

有趣的是,用户可以使用四个 SQL Server 中的三个进行身份验证。只有这台服务器工作不正常。我在这个 sql server 上为 SQl Service 设置了两个 SPN。

他们看起来像 -

MSSQLSvc/[服务器名].[域].local:1433

MSSQLSvc/[服务器名]:1433

这些实际上已注册到我们用于 SQL Server 的服务帐户。有趣的是,我找不到在任何地方工作的服务器的 SPN。

任何帮助,将不胜感激!

编辑:另外,要注意的另一点是,如果我尝试将用户直接添加为 SQL 服务器的登录名。我右键单击登录并单击添加登录然后单击搜索。然后我输入 [Domain]\[Username] 并单击检查名称。它验证名称是否正确。然后我点击确定。然后再次确定,它给出了错误 Windows NT 用户或组 '[Domain]\[Username]' not found。再次检查名称。

4

1 回答 1

3

我认为它已修复,但显然不是因为我们必须添加一个新用户并且他们无法进行身份验证。

用户必须重新登录才能选择新组。否则,它的 kerberos 票证仍在其 PAC 中使用旧的组成员信息

这些实际上已注册到我们用于 SQL Server 的服务帐户。有趣的是,我找不到在任何地方工作的服务器的 SPN。

我认为发生的情况是您有一个正确设置 SPN 的 SQL Server,而其他三个根本没有设置 SPN 的 SQL Server。因此,您将在此特定服务器上使用 Kerberos,而在其他三个服务器上使用 NTLM。

如前所述,当您使用 Kerberos 时,您必须使用某些工具清除票证,或者您必须重新登录才能获得新的组成员身份。您也可以尝试锁定屏幕然后解锁。如果我没记错的话,这也应该刷新票。

与 Kerberos 不同,NTLM 不携带组 memberhsip 数据。在 SQL Server 使用 NTLM 对用户进行身份验证后,它将找到经过身份验证的用户的组成员身份,包括您刚刚添加的新组。

于 2012-06-18T05:35:28.783 回答