我们使用 Windows 身份验证,但我们不会为特定的 AD 用户创建登录名。我们为 AD 组创建登录名,用户可以通过成为其成员来访问。
我注意到,当我尝试使用如下命令为某些 AD 用户(而非组)创建映射时,除了创建映射外,还会创建DOMAIN\ADlogin登录名。
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'RemoteName',
@locallogin = N'DOMAIN\ADlogin',
@useself = N'False',
@rmtuser = N'rmtuser',
@rmtpassword = N'password'
如果我删除登录名,映射也会被删除。
DROP LOGIN [DOMAIN\ADlogin]
有什么方法可以避免创建登录名,但可以获取 AD 用户的映射?这对我来说听起来像是不可能的,但也许有人在解决这个问题方面有很好的经验。
Microsoft SQL Server 2017 (RTM-CU9) (KB4341265) - 14.0.3030.27 (X64) 2018 年 6 月 29 日 18:02:47 版权所有 (C) 2017 Microsoft Corporation Standard Edition(64 位)在 Windows Server 2016 Standard 10.0(Build 14393)上:)
如果你运行这段代码:
您将能够找到一段负责创建 win 登录的代码:
这里
sys.sp_MSaddlogin_implicit_ntlogin @locallogin
创建相应的登录名,principal_id
接下来将通过此代码检索它:(这里
U
表示WINDOWS_LOGIN
)然后它将被传递以创建映射:
因此,您的问题的答案是否定的,除非您
remote_user
通过传递NULL
as将所有登录名映射到相同的登录名@locallogin
。