2010-02-03 6 views

Répondre

3

C'est ce que je l'ai fait:

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

Vous pouvez enregistrer la sortie de la procédure stockée sp_helpuser dans une variable de table et une requête sur ce point:

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 

Cependant, il doesn pas mal à exécuter simplement sp_droprolemember indépendamment du fait que l'utilisateur est dans le rôle.

Questions connexes