0
- 一个单一的Microsoft SQL Server 2008 R2
- 两个数据库有一些表:
DB1
和DB2
(两者使用相同的所有者) - 在DB1,
DB1.dbo.View1
的视图,即SELECT * FROM DB2.dbo.Table1
- 作用,
ViewRole
,在DB1授予SELECT许可证到视图(没有其他权限) - 个Windows用户,
DOMAIN\user
,与服务器角色设置为public
,谁属于DB1的ViewRole
当用户试图从视图中进行选择,我得到的错误:
The server principal "DOMAIN\user" is not able to access the database "DB2" under the current security context
我曾尝试(希望成功)同时使用,以激活跨数据库所有权链接:
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中的表中进行选择,则不会出现错误。
任何人有任何建议可能会错过或误解?
感谢JodyT!这就是它。一旦我将用户添加到DB2,它就像一个魅力一样。我还将删除服务器级别选项;我只是将其添加到完全确定它是活跃的。 – ANisus