请解释设置 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://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
我希望这一切都有帮助。
| 归档时间: |
|
| 查看次数: |
61998 次 |
| 最近记录: |