我在同一个SQL Server上有两个数据库:
数据库A
数据库B
我想让user1访问数据库,但只能通过sprocs的EXECUTE权限。
我不想授予select权限,因为这打破了“仅通过sprocs访问数据库”的安全模型
答案 0 :(得分:3)
您可能需要为这两个数据库启用cross database ownership chaining。
要查看它是否已启用:
select name, is_db_chaining_on
from sys.databases
启用设置:
EXEC sp_dboption 'DatabaseA', 'db_chaining', 'true';
GO
EXEC sp_dboption 'DatabaseB', 'db_chaining', 'true';
GO
答案 1 :(得分:1)
我确实遇到了这个问题但在我的情况下解决方案是更新两个数据库以拥有相同的所有者。
如果数据库归同一所有者所有,则无需明确启用所有权链接(因为所有者是同一个)。
关于此的好文章:[http://www.sommarskog.se/grantperm.html] [1]
您可以使用sp_changedbowner或“ALTER AUTHORIZATION”语句更新数据库的所有权以获取更新版本。