如何解决无法授予ALTER对数据库角色的权限?
我有一个名为ApplicationUsers
的数据库角色。我想授予该角色成员同一角色的ALTER
权限,以便现有成员可以添加或删除其他成员。这是我尝试过的SQL语句:
GRANT ALTER ON [dbo].[ApplicationUsers] TO [ApplicationUsers]
我收到以下错误:
找不到对象'ApplicationUsers',因为它不存在或您没有权限。
我可以确认我正在从执行GRANT
命令的用户帐户是否具有所需的权限。如果我运行fn_my_permissions(NULL,'DATABASE')
,则返回的值之一是ALTER ANY ROLE
。
我已经仔细检查了该角色是否存在以及它的拼写是否正确。这是SSMS的片段:
我想念什么?
编辑:
多亏了David的回答,我才成功执行了命令,但实际上似乎没有用。 ApplicationUsers
组的成员似乎仍被拒绝添加其他成员的权限。在SSMS中查看角色的属性时,缺少权限:
这是在运行以下命令之后:
GRANT ALTER ON ROLE::ApplicationUsers TO ApplicationUsers WITH GRANT OPTION
解决方法
允许角色成员添加和删除成员或重命名角色是不寻常的。但您可以这样做:
GRANT ALTER ON role::[ApplicationUsers] TO [ApplicationUsers]
但是看起来这是不允许的,并且授予无声地执行任何操作。而是引入一个ApplicationAdmins角色,并向ApplictionUsers授予ALTER。例如
create role ApplicationUsers
create role ApplicationAdmins
GRANT ALTER ON role::ApplicationUsers TO ApplicationAdmins
grant select to ApplicationUsers
select p.name grantee,perm.*
from sys.database_permissions perm
join sys.database_principals p
on perm.grantee_principal_id = p.principal_id
where class_desc = 'DATABASE_PRINCIPAL'
go
alter role ApplicationUsers add member ApplicationAdmins
alter role ApplicationAdmins add member user1
go
create table ApplicationTable(id int)
go
execute as user='user1'
alter role applicationusers add member user2
select * from ApplicationTable
revert
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。