SQL Server 2008模式分离-模式权限和数据库角色



我真的希望有人能对此有所了解。先澄清一下我之前所说的;当提到模式时,我指的是用于所有权分离的数据库对象,而不是数据库创建模式。

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

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

数据库:

  • 安全/模式:
    • 核心
      • CoreRole(所有者)
      • SchemaARole (select, delete, update)
      • SchemaBRole (select)
    • SchemaA
      • SchemaARole(所有者)
    • SchemaB
      • SchemaBRole(所有者)
  • 安全/角色/数据库角色:
    • CoreRole
      • core_login
    • SchemaARole
      • login_a
    • SchemaBRole
      • login_b

对于使用它们的三个应用程序,设置工作得非常好。唯一的问题是如何创建/生成一个脚本,创建模式->角色权限?正确地应用了所有者角色。例如,模式核心获得所有者角色CoreRole(如预期的那样)。但是SchemaARole和SchemaBRole没有被应用。

我没能找到一个选项来打开这个xSQL对象,也没有一个选项来从SQL Server管理工作室脚本存在。好吧,至少我找不到。

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

我刚刚打开了SQL Profiler & &;被困住了,就像我想象的那样。试试这个:

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

最新更新