【问题标题】:Grant SELECT permission on a view in reporting schema, but not on underlying objects in different schemas授予对报告架构中的视图的 SELECT 权限,但不授予不同架构中的基础对象的 SELECT 权限
【发布时间】:2020-03-09 12:36:36
【问题描述】:

我正在准备一组视图,用户可以使用这些视图来准备自己的报告。视图从其他模式(包括 dbo)查询表。 视图是在单独的 REPORTING 模式中创建的。我已配置以下用户,最终用户将使用该用户访问数据:

CREATE ROLE report AUTHORIZATION db_securityadmin;
GRANT SELECT, EXECUTE ON SCHEMA :: reporting TO report 
CREATE LOGIN reporting_login WITH PASSWORD = 'SomePassword'
CREATE USER reporting_usr FOR LOGIN reporting_login
EXEC sp_addrolemember N'report', reporting_usr'

当尝试查询我的视图时,我收到一条错误消息:“对象 XXX 架构 dbo 的 SELECT 权限被拒绝”。所以关注这个话题:Grant Select on a view not base table when base table is in a different database(澄清:我所有的表和视图都在同一个数据库中) 我将视图的所有权更改为 dbo user(ALTER AUTHORIZATION ON reporting.[vCounters] TO dbo) ,这对于仅使用 dbo 表的视图效果很好,但是当我开始使用其他模式时,我开始在这些模式上再次收到权限被拒绝错误表格。

视图使用的所有模式都归同一个 ApplicationAdmin 用户所有,dbo 模式显然归 dbo 所有。 如何正确应用所有权链以允许 reporting_usr 从报告模式中的视图而不是其他模式中的基础表中查询。

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    如何正确应用所有权链以允许 reporting_usr 从报告架构中的视图而不是其他架构中的基础表中查询。

    视图和表必须具有相同的所有者。如果您的报告用户无权在报告架构中创建对象,则只需将其所有者更改为 dbo。

    【讨论】:

      猜你喜欢
      • 2011-05-07
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      • 2011-03-24
      • 2020-02-07
      • 1970-01-01
      • 2016-12-14
      相关资源
      最近更新 更多