我创建了通过链接服务器(SQL Server 2014)查询另一台服务器的视图。
我需要授予开发人员使用此视图的权限。
仅授予 select 是不够的,他们收到以下错误:
对远程服务器的访问被拒绝,因为不存在登录映射。
我可以授予他们从该视图中选择的最受限制的权限是什么?
我们使用 SQL 登录连接到链接服务器(使用此安全上下文进行),我可以使用我的用户查询此视图。我还可以使用我的 Active Directory 用户查询此视图。我没有尝试使用链接服务器登录来连接访问链接服务器,但是如果连接登录有任何问题,我的 AD 用户无法连接到链接服务器。
出于测试目的,我将sysadmin授予该用户。它可以查询这个视图,所以这绝对是一个权限问题。在授予sysadmin之前,用户只有public,在服务器级别没有特殊权限,并且在视图的数据库中只有db_reader 。
您收到的消息告诉您,您提供的凭据与目标计算机上的凭据之间没有映射。您需要确保用于设置链接服务器的凭据也具有登录名,或者可以映射到链接服务器上的登录名。
我怀疑当您设置它时,您指定了对您有用的选项
Be made using the login's current security context
,因为您在远程机器上登录了 - 但它不适用于其他任何人,因为他们没有足够的凭据来查询链接服务器。(只是一种预感)这是有关如何设置链接服务器以及所有选项的指南,我怀疑您可能需要更改用于连接到链接服务器的安全上下文或将其他帐户添加到其中。
https://msdn.microsoft.com/en-us/library/ff772782.aspx
重新创建链接服务器而不
@provstr=N'ApplicationIntent=ReadOnly'
参数解决
no login-mapping exists
的错误。所以选择权限就足够了。