我想为从另一个数据库连接2个表的视图授予用户读取权限。 我不想要:
truncate
创建一个hack表的变体,以及一个在触发器上插入数据的存储过程。这可以以某种方式完成吗?也许有些东西我错过了,你们可能都知道。
我已阅读这些帖子,但他们没有解决我的问题: Grant SELECT permission on a view, but not on underlying objects
Grant Select on a view not base table when base table is in a different database
https://msdn.microsoft.com/en-us/library/ms188676.aspx
谢谢
修改
经过一些研究,我提出的最简单的解决方案是激活数据库中的cross database ownership chaining
选项,我将放置视图并向用户授予读取权限。这可能与我试图避免的第二点相反。这是个好主意吗?
答案 0 :(得分:1)
让他们登录同一服务器上的另一个数据库,并且只包含您的单个视图,并且视图指向您的安全数据库。除了具有视图的数据库之外,不要给该登录任何访问权限,只能读取对该单个视图的访问权限。显然,您必须完全限定表名(例如from SourceDB.dbo.SomeSecretTable
)。
答案 1 :(得分:0)
我最终做了什么:
在没有AD小组的情况下无法找到原始问题的解决方案。