2009-07-29 6 views

Répondre

58
SELECT DATABASE_PRINCIPAL_ID('role') 
--or 
IF DATABASE_PRINCIPAL_ID('role') IS NULL 

USER_ID est déprécié et pourrait se casser. CREATE ROLE indique SQL 2005+ donc c'est OK

+0

@Klaus: essayez de créer un rôle + utilisateur avec le même nom. Cela échouera. https://msdn.microsoft.com/en-us/library/ms187328.aspx "nom" colun est unique – gbn

+1

Bon point. Oui, le nom doit être unique pour tous les utilisateurs, groupes et rôles. J'ai supprimé mon commentaire précédent. Merci. –

23
if not exists (select 1 from sys.database_principals where name='role' and Type = 'R') 
begin 
CREATE ROLE role 
    AUTHORIZATION MyUser; 
end 
+3

Cela échoue si vous avez un utilisateur qui a le même nom "rôle". Bizarre, mais il faudrait supprimer le "= 'R'" pour fonctionner 100% – gbn

+0

@Klaus qu'est-ce que j'ai à faire avec ça? – gbn

Questions connexes