1
我想从多个数据库中的角色中删除用户。不确定用户可以在所有数据库中担任相同角色。我如何检查用户是否在角色中,以及是否将用户从角色中删除。检查角色是否由数据库中的特定用户组成?
例如 如果用户在角色存在 开始从角色 END
我想从多个数据库中的角色中删除用户。不确定用户可以在所有数据库中担任相同角色。我如何检查用户是否在角色中,以及是否将用户从角色中删除。检查角色是否由数据库中的特定用户组成?
例如 如果用户在角色存在 开始从角色 END
这是我做过什么:
IF EXISTS(SELECT *
FROM sys.database_role_members AS RM
JOIN sys.database_principals AS U
ON RM.member_principal_id = U.principal_id
JOIN sys.database_principals AS R
ON RM.role_principal_id = R.principal_id
WHERE U.name = @username
AND R.name = @rolename)
EXEC sp_droprolemember @rolename, @username;
下降用户可以在一个表变量的存储过程sp_helpuser
的输出,并查询存储上:
declare @groups table (
UserName varchar(max),
GroupName varchar(max),
LoginName varchar(max),
RefDBName varchar(max),
DefSchemaName varchar(max),
UserId int,
SID varbinary(max)
)
insert into @groups exec sp_helpuser 'TheUser'
if exists (select * from @groups where GroupName = 'TheRole')
begin
print 'Removing user from role...'
exec sp_droprolemember 'TheRole', 'TheUser'
end
然而,这不是无论用户是否在角色中,都不会伤害到只执行sp_droprolemember
。