【问题标题】:what schema permissions are entailed when a SQL Server 2005 database role owns a schema?SQL Server 2005 数据库角色拥有架构时需要哪些架构权限?
【发布时间】:2011-04-12 14:15:34
【问题描述】:

在 SQL Server 2005 中,用户定义的数据库角色可以“拥有”一个架构。您可以在数据库角色的属性窗口中看到这一点。就该架构中的表的权限/特权而言,这确切意味着什么?拥有架构是什么意思?

或者,换一种方式问:如果我希望特定的用户定义数据库角色对架构中的每个表都具有选择/插入/更新/删除权限,那么实现此目的的最佳/最智能方法是什么?

我可以进入架构中每个单独表的权限并将权限授予角色,但这似乎很愚蠢。我如何为整个架构做到这一点?

谢谢 aj

【问题讨论】:

    标签: sql database sql-server-2005


    【解决方案1】:

    “拥有”意味着“拥有完全访问权限”或“可以做任何事情”。

    如果这是您想要的,只需将该组设为架构所有者。

    否则,向该组授予架构范围的权限。您可以授予架构的select 权限,组成员将能够从架构中的所有表中进行选择,依此类推。

    请参阅GRANT Schema Permissions 了解更多信息。

    【讨论】:

    • 好的,当我这样做时:grant select,insert,update,delete on schema::<theschemaname> to <therolename> 我得到:无法授予、拒绝或撤销对 sa、dbo、实体所有者、information_schema、sys 或您自己的权限。我以 sa 身份登录。 ???
    • @Allen 那么 是模式的当前所有者吗?确保它不是第一个。也就是说,将架构所有权转移给dbo,然后将其权限授予
    • 是的,格塞尔格。就是这样。谢谢你。我之前已将 的所有者设置为 。我将所有者设置回dbo,并且能够成功grant select,insert,update,delete on schema::<theschemaname> to <therolename>。我已经设置了架构所有权,认为这是向该角色的成员开放该架构中所有表的权限的正确方法,但它似乎不起作用。我想我对架构所有权和授予基于架构的权限之间的权限差异并不完全清楚。 aj
    【解决方案2】:

    MSDN 文档:db_owner

    让他们成为特定数据库的 db_owner 组的成员基本上可以满足您的要求 - 当然他们有一些额外的权限 - 例如删除数据库。

    您可以创建一个新的用户组/模式,当然正如您所指出的,您需要设置适当的权限:SQL Server 2005 Permissions

    【讨论】:

    • 我对让用户定义角色的成员成为数据库所有者不感兴趣。请仔细阅读问题。
    猜你喜欢
    • 2011-10-15
    • 1970-01-01
    • 2010-12-12
    • 2011-11-27
    • 2015-01-25
    • 1970-01-01
    • 2014-12-19
    • 1970-01-01
    • 2011-04-14
    相关资源
    最近更新 更多