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

时间:2015-12-12 12:57:27

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

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

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

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

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

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

-- 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"

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

1 个答案:

答案 0 :(得分:0)

您将需要两个域之间的信任,以便使用域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)。只要返回服务器的IP地址,就不必担心ping是否失败。如果您没有获得IP地址,则域之间存在一个更基本的名称解析问题(您可能需要域A的DNS服务器中的转发器,将域B的名称指向域B中的DNS服务器),反之亦然( A到B,B到A等)。