Database1有一个表:A
Col1 Col2, Col3, Col4
1 2 3 4
我希望Database2上的用户(XY)看到该表,所以我创建了一个视图
Create View vw_TableA as
Select col1, col2, col3, col4
from Database1.dbo.A
但是用户遇到错误
916消息,级别14,状态1,第2行 服务器主体“ XY”在当前安全上下文下无法访问数据库“ Database1”。
正在使用:Sql Server 2008 R2 脚本:TSql
有关授予权限的任何想法。我不想将usre(XY)映射到database1,因为如果这样做,他就可以访问database1上的所有表。
目前仅适用于一个用户,但我们将获得更多的用户和更多的数据库。
有没有办法做到这一点?
答案 0 :(得分:0)
除非您已授予对公共角色的权限(这不是一个好习惯),否则,如果您已授予用户权限,则用户只能访问database1中的对象。因此,将用户添加到database1将默认仅允许连接。
您可以简单地将用户(没有授予权限)添加到database1中,然后在两个数据库中打开DB_CHANING
选项。从安全角度来看,这是一个可行的解决方案,只要只有相同的特权用户才能在这些数据库中创建对象(例如sysadmin角色成员)。
ALTER DATABASE Database1 SET DB_CHAINING ON;
ALTER DATABASE Database2 SET DB_CHAINING ON;