从不同的 SQL Server 连接时,用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败

Posted

技术标签:

【中文标题】从不同的 SQL Server 连接时,用户“NT AUTHORITY\\ANONYMOUS LOGON”登录失败【英文标题】:Login Failed for user 'NT AUTHORITY\ANONYMOUS LOGON' when connecting from a different SQL Server从不同的 SQL Server 连接时,用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败 【发布时间】:2017-02-27 10:08:31 【问题描述】:

我有 3 台服务器:

server1:安装了 Management Studio 的服务器

server2:数据库服务器,数据库database2运行在实例server2上

server3:数据库服务器,数据库database3运行在实例server3上

我在 server2 上创建了一个链接服务器,指向 server3。当我使用链接服务器执行脚本时,它可以工作。 但是,当我在 server1 上登录时,当我在 Management Studio 中连接到 server2 并尝试使用链接服务器执行查询时,出现错误:

用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败

为什么这不起作用,而当我在 server2 上打开 Management Studio 时它起作用?

server2 和 server3 的 SQL Server 服务和 SQL Server Agent 在同一个帐户下运行,该帐户是域帐户。

【问题讨论】:

你解决了吗? 很遗憾没有。我们刚刚解决了这个问题。 如果您愿意用一些额外的细节来编辑您的问题,我可以帮助您解决这个问题。最重要的是,我需要以下命令的输出:setspn -l 【参考方案1】:

好像是Kerberos Double Hop 问题。

您可以尝试通过包含 IP 地址重新创建链接服务器。例如,在 server2 中,链接服务器与 [ServerName], [PortNumber] (Server2, 1433)。

【讨论】:

【参考方案2】:

有趣的是,您在两个不同的数据库服务器(实例)上配置了相同的服务帐户,我建议为每个数据库服务器设置单独的服务帐户并设置正确的 SPN(命令:SETSPN,参考https://technet.microsoft.com/en-us/library/cc731241(v=ws.11).aspx)

【讨论】:

以上是关于从不同的 SQL Server 连接时,用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server中的用户'NT AUTHORITY ANONYMOUS LOGON登录失败

如何在NT帐户无效时恢复SQL Server所有权

“用户'NT AUTHORITY ANONYMOUS LOGON'登录失败。”到SQL Server 2005

非管理员用户的 SQL Server 连接字符串

使用 EXECUTE 从 SQL Server 调用用户定义函数时的标量结果不同

ASP.NET 和 SQL Server 2008 中的错误“用户 'NT AUTHORITY\IUSR' 登录失败”