无法授予对数据库角色的 ALTER 权限?

Can't grant ALTER permission on database role?

我有一个名为 ApplicationUsers 的数据库角色。我想授予此角色的成员对同一角色的 ALTER 权限,以便现有成员可以添加或删除其他成员。这是我试过的 SQL 语句:

GRANT ALTER ON [dbo].[ApplicationUsers] TO [ApplicationUsers]

我收到以下错误:

Cannot find the object 'ApplicationUsers', because it does not exist or you do not have permission.

我可以确认我正在从 执行 GRANT 命令的用户帐户 是否具有所需的权限。如果我 运行 fn_my_permissions(NULL, 'DATABASE') 返回的值之一是 ALTER ANY ROLE.

我仔细检查了该角色是否存在并且拼写正确。这是 SSMS 的截图:

我错过了什么?

编辑:

多亏了大卫的回答,我得到了成功执行的命令,但实际上似乎没有用。 ApplicationUsers 组的成员似乎仍被拒绝添加其他成员的权限。在 SSMS 中查看角色的属性时,缺少权限:

这是在 运行 执行以下命令之后:

GRANT ALTER ON ROLE::ApplicationUsers TO ApplicationUsers WITH GRANT OPTION

允许角色成员添加和删除成员或重命名角色是不常见的。但你可以这样做:

GRANT ALTER ON role::[ApplicationUsers] TO [ApplicationUsers]

但是好像是不允许的,grant默默的什么都不做。而是引入一个 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