【问题标题】:Is there a system role to allow viewing definition of all objects in a database?是否有系统角色允许查看数据库中所有对象的定义?
【发布时间】:2013-03-18 15:04:03
【问题描述】:

我需要请求全局组授予对生产数据库的足够访问权限,以便支持使用该数据库的应用程序。我正在尝试确定我需要申请哪些具体权利。

为了对所有表执行查询,我想请求db_datareader 访问权限。我想避免维护确保全局组对所有对象具有SELECTVIEW DEF 访问权限。我知道db_datareader rights,如果获得批准,将授予用户对所有表的完全SELECT 权限。是否有对应的角色授予查看所有表、存储过程、视图等定义的权限?

【问题讨论】:

    标签: sql-server-2008


    【解决方案1】:
    USE [your database]
    EXEC sp_addrolemember 'db_datareader', '[your user name]'
    

    【讨论】:

    • 只是为了确保:这是否授予用户对所有对象(包括存储过程)的读取权限,还是需要 DDL_ADMIN 权限?
    【解决方案2】:

    定义“对生产数据库的充分访问”

    作为一名 DBA,我不会授予任何 DDL 管理员或任何类型的访问权限以允许用户即时更改架构,这会导致灾难,并使您的 DBA 更加努力地工作。 DBA 必须而且应该能够在适当的测试后帮助解决性能问题并更改生产模式。您真的不想在不测试 1st 的情况下更改生产架构。

    话虽如此,如果用户想要有限的访问权限来解决性能问题(这实际上可以让您的生活更轻松),他们可能需要以下任何一种:

    • 查看数据库状态
    • 查看服务器状态

    这两个允许访问 DMV,这对于查明性能问题和查询的运行方式很有用。

    SELECT、UPDATE、INSERT 等都是正常的。如果您的数据库对象(表、视图、存储过程)不需要细粒度的权限,我会使用任何默认数据库角色并将用户或用户放入其中。

    运行存储过程的权限将是 EXECUTE。

    【讨论】:

      猜你喜欢
      • 2011-01-02
      • 2018-07-09
      • 1970-01-01
      • 2016-04-20
      • 2021-10-28
      • 2020-06-21
      • 2011-12-03
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多