【问题标题】:SQL How to set PermissionsSQL 如何设置权限
【发布时间】:2016-01-29 23:58:31
【问题描述】:

我有一个用户需要对数据库中的一组有限的表具有只读访问权限。当我从他们的属性中删除 db_owner 时,对数据库的访问就会消失。同一用户对服务器上的另外两个表进行了读/写。如何将受限数据库设置为正确的权限?

【问题讨论】:

  • 您使用的是什么版本的 SQL Server? @alcor8
  • 请查看我修改后的答案。

标签: sql sql-server permissions


【解决方案1】:

您需要将用户添加到db_datareader 角色。您可以通过以下两种方式之一执行此操作,通过management studio,或者您可以执行类似的操作。

exec sp_addrolemember 'db_datareader',alcor8

【讨论】:

  • ===================================== 无法访问数据库 XXXXXX。 (ObjectExplorer) ------------------ 程序位置:在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.DatabaseNavigableItem .get_CanGetChildren() 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItem.RequestChildren(IGetChildrenRequest request) 在 Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ExplorerHierarchyNode.BuildChildren(WaitHandle quitEvent)
  • 您使用的是sa 帐户吗?您确定您尝试授予权限的用户有权执行此操作吗?
  • 想通了。将 db_owner 与 db_reader 一起保留并拒绝对所有不必要的表进行选择。
  • 请不要这样做(即授予db_owner然后拒绝权限);弄清楚为什么没有 db_owner 角色用户不能访问数据库。我要采取的第一步是确保他们实际上是数据库中的用户。选择 sys.database_principals 和 sys.database_permissions 看看他们有什么。
【解决方案2】:

试试这个GRANT SELECT on [databasename].* TO '[name]';

如果你有问题,这应该可以工作,请在 cmets 中发布

【讨论】:

  • 试过了,但在管理员登录的首选项下的会员页面上删除 db_owner 后,我无法打开数据库。在用户拥有的架构页面上,该用户有一个框,而不是对 db_owner 的检查。不知道这意味着什么。
  • 看狗不回答问题:P
猜你喜欢
  • 2010-11-23
  • 1970-01-01
  • 2017-11-02
  • 2014-10-08
  • 2016-09-11
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多