我想知道发生了什么。这是我们的设置: 我们有四个相互复制的SQL服务器。
我们向Windows Active Directory添加一个新用户,并将它们添加到我们多年来一直使用的SQL Server组中。
当尝试使用Windows身份验证进行身份验证时,新用户会在主题行中返回该错误。但是,以前在Active目录中的任何用户都可以正常工作。
有一次我让SQL Server“陷入困境”,因为我们有一组用户因为这个错误而无法登录。我对SPN进行了一些更改,最终制作了它,所以没有人可以登录。然后我意识到SPN应该如何查看并修复它。然后我猜一些魔法发生了,那些用户能够进行身份验证。我认为这是固定的,但显然不是因为我们必须添加一个新用户,他们无法进行身份验证。
有趣的是,用户可以使用四个SQL Server中的三个进行身份验证。只有这一台服务器工作不正常。我在这个sql server上为SQl服务设置了两个SPN。
他们看起来像 -
为MSSQLSvc / [服务器] [域]。本地:1433
为MSSQLSvc / [服务器]:1433
这些实际上已注册到我们用于SQL Server的服务帐户。有趣的是,我找不到适用于任何地方的服务器的SPN。
任何帮助将不胜感激!
编辑:另外,需要注意的另一点是,如果我尝试将用户直接添加为登录SQL服务器。我右键单击登录并单击添加登录,然后单击搜索。然后我输入[Domain] \ [Username]并单击检查名称。它验证名称是否正确。然后我单击确定。然后再次确定,它会给错误Windows NT用户或组'[域名] \ [用户名]'找不到。再次检查名称。
答案 0 :(得分:3)
我认为这是固定的,但显然不是我们必须添加一个 新用户,他们无法进行身份验证。
用户必须重新登录才能获得新组。否则,它的kerberos票仍在其PAC中使用旧的组成员资格信息
这些实际上已注册到我们用于的服务帐户 SQL Server。有趣的是我无法找到SPN 在任何地方工作的服务器。
我认为发生的情况是您有一台SQL Server正常设置SPN,而其他三台SQL Server根本没有设置SPN。因此,您将在此特定服务器上使用Kerberos,而在其他三个服务器上使用NTLM。
如前所述,当您使用Kerberos时,您必须使用某些工具清除故障单,或者必须重新登录以获取新的组成员身份。您也可以尝试锁定屏幕然后解锁。如果我没记错的话,这也应该刷新票证。
与Kerberos不同,NTLM不携带group memberhsip数据。在SQL Server使用NTLM对用户进行身份验证后,它将找到经过身份验证的用户的组成员身份,包括刚刚添加的新组。