首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保留SQLServer权限

保留SQLServer权限
EN

Stack Overflow用户
提问于 2009-08-11 23:28:58
回答 8查看 311关注 0票数 1

如何在一段时间内阻止特定用户访问数据库,同时又不会丢失该用户对db对象的权限。

基本上,当他回来时(即当访问权限恢复时),他应该拥有他在访问被切断之前的所有权限。如果我使用sp_revokedbaccess ' myuser‘,用户myuser将失去他对db对象的所有权限。

有没有一种方法可以保留myuser的权限,而不求助于繁琐的备份权限和恢复权限之类的变通方法?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-08-12 03:40:00

想法:

  1. DENY CONNECT user或Windows (sp_revokedbaccess
  2. You不能将ALTER_LOGIN与DISABLE参数一起使用来拒绝对DENY CONNECT SQL TO login组的访问(从链接中引用)
  3. 将所有权限分配给数据库角色,然后撤消用户的权限。在需要时将用户添加到角色。直接给用户分配对象权限是不好的。
  4. 如果用户有系统管理员权限,你根本不能拒绝他们任何东西(可能是CONNECT SQL?)
  5. 如果用户有db_owner权限(假设在DB中设置),你不能在数据库中拒绝他们除了CONNECT

之外的任何权限

票数 3
EN

Stack Overflow用户

发布于 2009-08-12 00:18:57

我看到的最简单的方法是禁用登录。您可以在状态页下的SSMS中的登录属性上执行此操作。

您可以使用以下T-SQL实现相同的功能:

假设您的登录名是bob sql登录名,但也可以是windows登录名。

代码语言:javascript
运行
复制
ALTER LOGIN bob DISABLE

然后,要启用登录

代码语言:javascript
运行
复制
ALTER LOGIN bob enable
票数 2
EN

Stack Overflow用户

发布于 2009-08-12 00:18:50

您应该能够显式地拒绝他的权限,然后撤销拒绝。

您也可以使用ALTER LOGIN ... DISABLE禁用登录,但将在服务器级别而不是数据库级别阻止登录。

黑客的解决方案是将用户映射到不同的登录,然后将他映射回(ALTER USER .. LOGIN = ...),但这是一种黑客,我甚至不确定是否能正确工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1263532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档