我有:
DB1
和DB2
(两者都拥有相同的所有者)DB1.dbo.View1
,SELECT * FROM DB2.dbo.Table1
ViewRole
被授予视图的SELECT许可(无其他权限)DOMAIN\user
,服务器角色设置为public
,属于DB1的ViewRole
当用户尝试从视图中选择SELECT时,我收到错误:
服务器主体“DOMAIN \ user”无法在当前安全上下文中访问数据库“DB2”
我已尝试(并希望成功)使用以下两者激活跨数据库所有权链接:
EXEC sp_configure 'Cross DB Ownership Chaining', '1';RECONFIGURE
和
EXEC sp_dboption DB1, 'db chaining', 'true'
EXEC sp_dboption DB2, 'db chaining', 'true'
要确认设置已完成,我运行:
SELECT name, owner_sid, is_db_chaining_on FROM sys.databases
结果是:
name owner_sid is_db_chaining_on
DB1 0x0105...DCB510000 1
DB2 0x0105...DCB510000 1
那么,为什么用户不能从视图中进行SELECT?如果视图仅从DB1中的表中进行选择,则不会出现错误。
任何人都有任何关于我可能错过或误解的建议吗?
答案 0 :(得分:3)