我在 SQL Server 2008 R2 上有一个数据库,它有两个架构,默认 dbo 和另一个称为 Webapps 的数据库,这两个架构都归 dbo 所有。
我在 Webapps 架构 (Webapps.getInventory) 中创建了一个视图,它只从 dbo.Inventory 中进行简单的选择。然后我创建了一个名为 Webuser 的用户,该用户SELECT
有权访问 Webapps 架构。
Webuser 可以登录并查看 Webapps.getInventory 视图,但是当它尝试从中选择时出现此错误:
对象“Inventory”、数据库“Database”、模式“dbo”的 SELECT 权限被拒绝。
我在想,由于这两个模式都归 dbo 所有,所有权链接将允许查询执行。我似乎能够让它工作的唯一方法是授予 Webuser 对 dbo 的权限,或者将其添加到整个数据库的 db_datareader 角色中。对我来说,如果用户必须具有读取数据库中其他所有内容的能力,这似乎违背了尝试将事物分离到 Webapps 模式中的目的。
那么,我是否忽略了设置中的某些内容?或者,Webuser 必须对这两个模式都具有权限才能使该视图正常工作,这是否正确?