【问题标题】:Trouble using Grant and Revoke使用 Grant 和 Revoke 时遇到问题
【发布时间】:2013-09-30 22:02:20
【问题描述】:

我只是想向我的数据库中的用户授予/拒绝安全对象。例如,这是我的撤销声明之一

使用我的数据库; 从 [用户名] 撤消 ALTER; 去吧

当我使用 SELECT FROM MyDB.sys.database_permissions 查看权限时,它说用户仍然拥有该权限。您实际上是如何撤消权限的?

【问题讨论】:

  • 执行查询后,刷新用户列表。然后选择用户并转到属性。您所看到的可能只是 Management Studio “有用”的缓存内容
  • 已经试过了,刷新数据库、用户和用户字段后仍然显示用户有权限。我什至在执行查询并刷新字段后重新启动了数据库,但用户仍然拥有权限

标签: sql sql-server sql-server-2012


【解决方案1】:

如果用户拥有包含特定安全对象的更广泛权限,而您revoked 对该安全对象拥有更窄的权限,则用户仍将拥有范围更广的grantgranted 权限。

如果您想要一个范围广泛的授权例外,您可能需要考虑在安全对象上使用deny

编辑:

鉴于您的 SQL:

USE MY_DB; REVOKE ALTER FROM [UserName]; GO

...您需要指定要撤销的安全对象的ALTER 权限:ALTER ENDPOINTALTER LOGIN

请参阅here 了解 ALTER 权限的适用性,例如:

REVOKE ALTER LOGIN FROM [UserName]

【讨论】:

  • 我试过了,但问题仍然存在。我可以使用 SQL Server Management Studio 轻松修改权限,但使用 T-SQL 无法使其正常工作。
  • 我已经编辑了我的答案,其中包含您在问题中输入的 SQL 的一些细节。
  • 您发布的示例给了我一个语法错误。我还手动从所有数据库成员和服务器成员中删除了用户。我还从所有拥有的模式中清除了他,并撤销了他所有的服务器安全权限。但是,当我尝试使用 T-SQL 撤销他的数据库安全权限时,仍然没有任何反应。奇怪的是我仍然可以使用管理工作室撤销他的数据库安全权限,但我不能通过 T-SQL。
猜你喜欢
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多