我真的希望有人能对此有所了解。先澄清一下我之前所说的;当提到模式时,我指的是用于所有权分离的数据库对象,而不是数据库创建模式。
我们使用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
对于使用它们的三个应用程序,设置工作得非常好。唯一的问题是如何创建/生成一个脚本,创建模式->角色权限?正确地应用了所有者角色。例如,模式核心获得所有者角色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]