SQL Server 到 SQL Server 链接服务器设置

Sco*_*use 24 sql-server

请解释设置 SQL Server 链接服务器需要什么。

服务器 A 仅用于 SQL 2005 Windows 登录。服务器 B 是相同的(仅限 SQL 2005 Windows 登录)。

服务器 A 运行 Windows XP。服务器 B 运行 Windows Server 2003。

两个 SQL Server 服务都在同一个域帐户下运行。我使用在两个 SQL Server 上都具有管理权限的域帐户登录到我的工作站。

请注意,这些都是 SQL Server 2005 SP2 - 我已经向我指出了旧的修补程序,但它们已经被应用。

我遇到的问题是这个错误:

“用户‘NT AUTHORITY\ANONYMOUS LOGON’登录失败。(Microsoft SQL Server,错误:18456)”

小智 18

根据我对这个问题的理解,这是一个“HOP”问题。

即您正在尝试使用服务器 A 将您的登录详细信息(使用 SSPI)中继到服务器 B。

在 SQL Server 2005 中,他们添加了大量的安全问题,使这变得比应有的困难。“Kerberos 身份验证”这两个词将成为大多数系统管理员/DBA 生活中的绊脚石。它有效地用于传递身份验证。

以下是您需要的基础知识。1) 服务器(A 和 B)需要在启用 Kerberos 委派的 Active Directory (AD) 中设置。(这是通过您的活动目录管理面板设置的)

2) 运行 SQL Server 的服务帐户也需要启用委派(这也是通过活动目录管理面板设置的)。- 如果它们不是在服务帐户下运行,则需要创建一个。

3) 服务器需要为实例、主机和机器名称定义 SPN。(使用 Windows 支持工具中名为 SetSPN 的工具)

支持工具(SetSPN 在这个集合中) http://www.microsoft.com/downloads/details.aspx?FamilyID=96a35011-fd83-419d-939b-9a772ea2df90&DisplayLang=en

(如何添加 SPN 的概述) http://technet.microsoft.com/en-us/library/bb735885.aspx

4)您可能需要将您的数据库设置为“值得信赖”

ALTER DATABASE SET 值得信赖

5)完成所有这些后,重新启动您的实例。

6) 然后再次尝试创建您的链接服务器。

最后,您可以测试与 SQL Server 的连接。如果您已正确配置,这应该可以正常工作。

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=ServerB;Integrated Security=SSPI;'
    ).MASTER.dbo.syscolumns
Run Code Online (Sandbox Code Playgroud)

这将告诉您您的连接身份验证类型。

select auth_scheme from sys.dm_exec_connections where session_id=@@SPID
Run Code Online (Sandbox Code Playgroud)

您想在此处获得“KERBEROS”而不是“NTLM”。

这是一个滑坡,KERBEROS 和传递委托,坚持下去,你最终会弄明白。

参考 Kerberos http://blogs.msdn.com/sql_protocols/archive/2005/10/12/479871.aspx

http://blogs.msdn.com/sql_protocols/archive/2006/12/02/understanding-kerberos-and-ntlm-authentication-in-sql-server-connections.aspx

http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/the-biggest-mistake-serviceprincipalname-s.aspx

问题的其他表现 http://www.sqlservercentral.com/Forums/Topic460425-359-1.aspx

http://msdn2.microsoft.com/en-us/library/aa905162(sql.80).aspx

http://msdn2.microsoft.com/en-us/library/ms189580.aspx

我希望这一切都有帮助。


小智 0

如果您搜索 sp_addlinkedserver 和 sp_linkedservers,您会得到一些示例。设置起来非常简单。