【发布时间】:2009-11-10 16:15:34
【问题描述】:
我在 SO 中搜索了一个已经存在但找不到的相关问题。
我正在为我们服务器场中的一些数据库设置只读数据库角色。以下是一个表的权限示例:
GRANT SELECT ON [dbo].[Table] TO [ReadOnly]
GRANT VIEW DEFINITION ON [dbo].[Table] TO [ReadOnly]
DENY ALTER ON [dbo].[Table] TO [ReadOnly]
DENY CONTROL ON [dbo].[Table] TO [ReadOnly]
DENY DELETE ON [dbo].[Table] TO [ReadOnly]
DENY INSERT ON [dbo].[Table] TO [ReadOnly]
DENY REFERENCES ON [dbo].[Table] TO [ReadOnly]
DENY TAKE OWNERSHIP ON [dbo].[Table] TO [ReadOnly]
DENY UPDATE ON [dbo].[Table] TO [ReadOnly]
这适用于 SELECT 权限...我能够仅选择数据,这正是我想要的。
但是,在 Management Studio 中,我看不到指定数据库的“表”选项卡中的表列表。我对这个用户的目标是为一些不熟悉 SQL 的用户提供一个登录名,他们可以用来提取数据并开始试验 SQL。这些用户对 SAS(一种统计处理语言)有丰富的经验,因此他们有一些使用代码的经验,但特别是在 SQL 方面没有那么多经验。
其中哪些权限将显示 Management Studio 中的表列表?
【问题讨论】:
-
这特别令人不安......我的印象是查看定义是查看数据库元数据所需的全部内容。
-
这是您唯一需要的权限 - 您明确拒绝同一用户的其他可继承权限,这会覆盖 GRANT(拒绝始终优先于 GRANT)。更改为 REVOKE,您将在 SSMS 中看到对象(请参阅下面的答案)
标签: sql sql-server