【问题标题】:How to link servers in different AD-Domains?如何链接不同 AD 域中的服务器?
【发布时间】:2016-03-18 08:15:08
【问题描述】:

我正在尝试链接在两个 独立 (!) Active Directory 域中运行的两个 SQL Server(2008R2 和 2014)。

问题是我只能使用远程域的 Windows 帐户登录远程服务器。所以挑战是将凭据传递给远程服务器,但我在这里卡住了。

  • 本地域(本地网络基础设施):dom8,服务器:dom8\sql2008,SQL(!)登录:localuser
  • 远程域(Microsoft Azure):dom14,服务器:dom14\sql20148,Windows(!)登录:dom14\import

服务器dom8\sql2008 想要连接到dom14\sql2014 以提取一些数据。

这是我在本地服务器上尝试过的:(以sa 身份登录dom8\sql2008):

-- Create a credential for the remote Windows login:
create credential cred_import WITH IDENTITY= 'dom14\user14', 
       SECRET = 'password' ;

-- Alter the local SQL login and add the created credential:
alter login local_user with credential = cred_import ;

-- Create the Linked Server entry:
exec sp_addlinkedserver 
    @server='dom14\sql2014', 
    @srvproduct='SQL Server' 

-- Add the credential to the linked server:
exec sp_addlinkedsrvlogin 
    @rmtsrvname ='dom14\sql2014', 
    @useself = 'FALSE',
    @locallogin=local_user,
    @rmtuser = [cred_import],  -- trying to pass on the credential
    @rmtpassword = NULL

但是,它不起作用。每当用户localuser尝试通过本地服务器连接到远程服务器时,就会收到错误login failed

顺便说一句,我可以使用 SQL Server Studio 连接到远程域,如下所示:

runas /netonly /user:dom14\user14  "C:\...\Ssms.exe"

显然我可以在本地创建远程端的凭据。只有远程服务器链接不起作用。

【问题讨论】:

  • 我手头没有不同域中的 SQLServer,但我会尝试配方 blogs.msdn.com/b/sqlcat/archive/2011/03/08/… 。 Azure 服务器也可以在单独的 AD 域中工作。我不太明白他们为什么要为远程服务器创建 ODBC 源。也许这是一个关键点。
  • @Ingaz Aaaa 这很有趣。谢谢!我们确实有一个 Azure 服务器,忘记提了。明天将阅读并尝试该文章!
  • @Ingaz 快速评论一下:似乎在本文中,他们使用的是 SQL 登录,而不是 WinAuth 登录。他们也在使用sp_addlinkedsrvlogin。明天我会更详细地阅读,在我这里已经很晚了。

标签: sql-server-2008-r2 active-directory windows-authentication sql-server-2014 credentials


【解决方案1】:

您需要两个域之间的信任才能使用域 B 的密码登录到域 A 的机器。

一旦建立信任,您就可以转到域 A 的机器,并授予域 B 用户 ID 执行您想做的事情所需的权限。

但是,这看起来更像是您尝试使用本地帐户,而不是基于您的脚本的域帐户。我怀疑你引用域的方式,而不是它自己的服务器可能是原因。

看线:

-- Create a credential for the remote Windows login:
create credential cred_import WITH IDENTITY= 'dom14\user14', 
       SECRET = 'password' ;

DOM14 是您的域名吗?或者您尝试连接的服务器的名称?

exec sp_addlinkedserver 
    @server='dom14\sql2014', 
    @srvproduct='SQL Server' 

另一个域中的服务器将是 XYZ.DOMAIN.COM,其中 XYZ 是实际的服务器名称,domain.com 是服务器所在的域。此外,您需要确保服务器有权读取其他域的 DNS 表。

从服务器 A,您应该能够转到 CMD 提示符并按名称 ping 另一台服务器(可能需要 FQDN,具体取决于后缀搜索列表)。不关心是否 ping 失败,只要返回服务器的 IP 地址即可。如果您没有取回 IP 地址,则您在域之间存在更基本的名称解析问题(您可能需要域 A 的 DNS 服务器中的转发器将域 B 的名称指向域 B 中的 DNS 服务器),反之亦然( A 到 B、B 到 A 等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2021-09-21
    • 1970-01-01
    • 2013-05-14
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多