2010-02-03 53 views

回答

3

這是我做過什麼:

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; 
2

下降用戶可以在一個表變量的存儲過程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

相關問題