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
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
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,等等)。
归档时间: |
|
查看次数: |
1207 次 |
最近记录: |