【问题标题】:Is there a way to change permissions for all the tables in SQL-server database at once?有没有办法一次更改 SQL-server 数据库中所有表的权限?
【发布时间】:2010-12-30 12:48:45
【问题描述】:

我想一次更改 SQL-Server 数据库中所有表的权限。有没有办法做到这一点?

【问题讨论】:

    标签: sql-server database permissions


    【解决方案1】:

    如果您的所有表都属于同一个架构,您可以在架构级别修改权限。

    Grant Schema Permissions

    【讨论】:

    • 啊,我总是忘记这个选项
    • 还有很多 GRANTs 有一个 ALL/ANY 选项,有数据库级别的权限意味着对数据库中每个对象的权限,还有像 db_datareader/db_datawriter 这样的固定角色。换句话说,有很多方法可以给这个蒙皮。
    • 我猜 Remus 暗示的是,它实际上是关于确定在可管理性方面最适合您的环境的方法。
    【解决方案2】:

    您可以编写一个脚本来检索表集,然后通过动态 SQL 授予/拒绝权限。

    但是,我认为更好的方法是创建一个角色,授予该角色权限,然后根据需要从该角色添加/删除个人。

    【讨论】:

      【解决方案3】:

      运行此脚本的结果(根据您的要求进行更改):

      SELECT
          'GRANT SELECT ON ' + OBJECT_NAME(o.object_id) + ' TO myRole'
      FROM
          sys.objects o
      WHERE
          OBJECTPROPERTY(o.object_id, 'IsMSSHipped') = 0
          AND
          OBJECTPROPERTY(o.object_id, 'IsTable') = 1
      ORDER BY
          OBJECT_NAME(o.object_id)
      

      【讨论】:

        猜你喜欢
        • 2011-08-26
        • 2020-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        • 2011-03-03
        相关资源
        最近更新 更多