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
。