【问题标题】:SQL Server 2008 schema separation - Schema permissions and database rolesSQL Server 2008 架构分离 - 架构权限和数据库角色
【发布时间】:2011-10-15 04:26:55
【问题描述】:

我真的希望有人对此有所了解。只是为了澄清我在说什么;当提到 Schema 时,我指的是用于所有权分离的数据库对象,而不是数据库创建模式。

我们使用 Sql Server Schema 对象将表分组为整体,其中每个组都属于一个应用程序。每个应用程序也有它自己的数据库登录。我刚刚开始介绍数据库角色,以便完全自动化部署到测试和登台环境。我们正在使用 xSQL 对象比较引擎。每晚运行一个批处理文件以执行比较并生成脚本更改文件。然后可以将其与代码更改一起应用于目标数据库。

我遇到的问题如下。考虑以下数据库结构:

数据库:

  • 安全/架构:
    • 核心
      • CoreRole(所有者)
      • SchemaARole(选择、删除、更新)
      • SchemaBRole(选择)
    • 架构A
      • SchemaARole(所有者)
    • 架构B
      • SchemaBRole(所有者)
  • 安全/角色/数据库角色:
    • 核心角色
      • core_login
    • SchemaARole
      • login_a
    • 架构BRole
      • login_b

该设置非常适合使用这些设置的三个应用程序。唯一的问题是如何创建/生成创建模式-> 角色权限的脚本?所有者角色得到正确应用。因此,例如,模式 Core 获得所有者角色 CoreRole(如预期的那样)。但是 SchemaARole 和 SchemaBRole 没有得到应用。

我无法在 xSQL 对象中找到将其打开的选项,也没有从 SQL Server 管理工作室编写脚本的选项。好吧,至少我找不到。

我在尝试做不可能的事吗?那么 SQL Server 是如何管理这种关系的呢?

【问题讨论】:

    标签: tsql sql-server-2008 permissions roles


    【解决方案1】:

    我刚刚启动了 SQL Profiler 并捕获了我认为的场景。试试这个:

    GRANT SELECT ON [Core].[TestTable] TO [CoreRole]
    GRANT DELETE ON [Core].[TestTable] TO [CoreRole]
    GRANT UPDATE ON [Core].[TestTable] TO [CoreRole]
    

    【讨论】:

    • 谢谢。自从我发布此问题以来,我已经找到了解决方案,并且可以确认发布的脚本选项会发生什么。
    猜你喜欢
    • 2011-09-24
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多