如何使用Windows身份验证使链接服务器正常工作?


20

我正在尝试使用域环境中的“使用登录名的当前安全上下文制作”来链接到在另一台服务器ServerB上创建的ServerA的链接服务器。我读到我需要为在每个服务器上运行SQL Server的服务帐户创建SPN,以启用Kerberos。我已经做到了,并且现在都显示身份验证方案为Kerberos,但是,我仍然面临错误:

"Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'".

在Active Directory中,我可以看到ServerB的服务帐户可以信任用于委派MSSQLSvc,但是我注意到ServerA的服务帐户尚未启用“信任此用户进行委派”。目标服务器是否还需要启用该选项?要使用当前的Windows登录名来使用链接服务器,是否还有其他必要?

Answers:


22

从台式机到要调用的服务器链中的每台计算机都必须启用Kerberos,信任关系才能通过第一跳。因此,是的,服务器需要信任用户进行委派。

“用户'NT AUTHORITY \ ANONYMOUS LOGON'的登录失败”几乎总是表示委派问题。

  • 您的Windows帐户必须同时有权访问ServerA和ServerB。
  • 您必须没有设置“帐户是敏感帐户,无法委托”。
  • ServerA和ServerB都必须注册自己的SPN。
  • 服务器必须是TCP / IP或已连接的命名管道。

SQL Server联机丛书文章提供了更多详细信息,是“为代理配置链接服务器”:http : //msdn.microsoft.com/zh-cn/library/ms189580(v=sql.105).aspx


1
有用的MSDN博客,有关SPN和Kerberos的详细信息
JanZahradník,2015年

还要检查您是否对任一服务器使用DNS别名,是否需要匹配SPN。
Greg

-1

这里有两件事:

  1. 当使用链接服务器而未将本地服务器登录名映射到远程服务器时,请勿登录到远程计算机,并使用Windows登录名运行脚本。由于使用模拟,因此双跳问题开始起作用。

  2. 另外,您将需要通过DCOMCNFG设置本地DTC进行通信。见附图。

(DCOMCNFG->组件服务->计算机->我的电脑->分布式事务处理协调器-> LocalDTC->属性->安全)

在此处输入图片说明

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.