2009-07-29 19 views

Respuesta

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

USER_ID está obsoleto y podría romperse. CREATE ROLE indica SQL 2005+ por lo que está bien

+0

@Klaus: intente crear un rol + usuario con el mismo nombre. Fallará https://msdn.microsoft.com/en-us/library/ms187328.aspx "nombre" colun es único – gbn

+1

Buen punto. Sí, el nombre debe ser único en todos los usuarios, grupos y roles. Borré mi comentario anterior Gracias. –

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

Esto falla si tiene un usuario que tiene el mismo nombre de "rol". Extraño, pero tendrías que eliminar el "= 'R'" para trabajar al 100% – gbn

+0

@Klaus ¿Qué tengo que ver con esto? – gbn

Cuestiones relacionadas