如何链接不同AD域中的服务器?

SQL*_*ice 7 credentials active-directory windows-authentication sql-server-2008-r2 sql-server-2014

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

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

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

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

这是我在本地服务器上尝试过的:(登录dom8\sql2008sa):

-- 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
Run Code Online (Sandbox Code Playgroud)

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

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

runas /netonly /user:dom14\user14  "C:\...\Ssms.exe"
Run Code Online (Sandbox Code Playgroud)

所以很明显我可以在本地创建远程端的凭证.只有远程服务器链接不起作用.

小智 0

您需要在两个域之间建立信任,才能使用域 B 密码登录域 A 计算机。

一旦信任到位,您就可以转到域 A 计算机并向域 B 用户 ID 授予执行您想做的操作所需的权限。

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

看线路:

-- Create a credential for the remote Windows login:
create credential cred_import WITH IDENTITY= 'dom14\user14', 
       SECRET = 'password' ;
Run Code Online (Sandbox Code Playgroud)

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

exec sp_addlinkedserver 
    @server='dom14\sql2014', 
    @srvproduct='SQL Server' 
Run Code Online (Sandbox Code Playgroud)

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

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