使用NTLM时,我们可以有链接服务器吗?

我无权访问Active Directory设置,也无权访问链接的服务器上的任何内容。

从我读过的所有东西,似乎这意味着我不能使用Kerberos – 这是一个大问题,因为我不知道如何使用没有它的链接服务器。

有没有办法连接到没有Kerberos的链接服务器? (或在AD中没有pipe理员启用Kerberos的一些方法?)


确切的问题描述

当我坐在我的服务器前连接到链接服务器 ,它工作正常; 但是当我尝试从任何其他计算机 (通过我的服务器委派)连接到链接的服务器时,它会给出错误:

用户'NT AUTHORITY \ ANONYMOUS LOGON'login失败。 (Microsoft SQL Server,错误:18456)

看来这是“ 双跳问题 ”,通常的解决scheme是启用Kerberos,它需要访问AD和链接的服务器。

当我将安全设置为“ 使用login的当前安全上下文 ”时,我得到了同样的错误,我不能使用“ 使用此安全上下文 ”,因为这似乎使用SQL身份validation(这是不启用链接服务器)而不是NTLM

这确实是一个受限制的委托(即“双跳”)的情况。 没有设置,你可以改变这将使这项工作。 如果存在的话,它将被定义为一个错误,因为它会破坏域限制只委托给可信任账户的政策。 因此,除非您将AD更改为将SQL Server“中间”标记为委派可信,否则您将无法成功实现双跳。 而任何其他的工作,我会给你,让我在一个位置,以帮助您违反您的域名政策。 既然看起来你明白了技术问题,我build议你敲右边的门:你的域名的主人和/或你的需求的利益相关者。

您可以使用sp_addlinkedsrvlogin将主机SQL Server上的Windowslogin名映射到远程服务器上的SQLlogin名。 这不适用于Windows组。

在链接服务器对话框中的安全部分,是否select了“使用login的当前安全上下文”?

您的Windows帐户是否设置在您尝试连接的服务器上?

要使用没有kerberos的链接服务器,唯一的select是SQLlogin。 如果这不是一个选项,你应该尝试修复Kerberos身份validation。

你必须找出哪个帐户运行sql服务器服务。 如果它是一个域帐户,您应该要求某人为用户注册SPN。

如果您有权访问域用户的域上的任何Windows 2008服务器,则应运行此CMD命令以检查已注册的内容(允许读访问)。

setspn -l [sqlservicedomainaccount] 

你应该检查setspn -l sqlmachinename并查看它是否被注册,以及sqlserviceaccount。 由于这个登记册不应该有重复项目,你首先需要删除,然后注册新的。

然后请networking中的某个人注册这个spn(因为这个服务需要在注册之后重新启动,你只能在一个时间窗口内进行)