2009-07-29 10 views

risposta

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

USER_ID è deprecato e potrebbe interrompersi. CREATE ROLE indica SQL 2005+, quindi è OK

+0

@Klaus: provare e creare un ruolo + utente con lo stesso nome. Fallirà. https://msdn.microsoft.com/en-us/library/ms187328.aspx "nome" colun è univoco – gbn

+1

Buon punto. Sì, il nome deve essere univoco tra utenti, gruppi e ruoli. Ho cancellato il mio commento precedente. Grazie. –

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

Questo fallisce se si ha un utente che ha lo stesso nome "ruolo". Strano, ma dovresti rimuovere "= 'R'" per funzionare al 100% – gbn

+0

@Klaus, cosa devo fare con questo? – gbn

Problemi correlati