CREATE ROLE (Transact-SQL)
Crea un rol de base de datos nuevo en la base de datos actual.
Sintaxis
CREATE ROLE role_name [ AUTHORIZATION owner_name ]
Argumentos
role_name
Es el nombre del rol que se va a crear.AUTHORIZATION owner_name
Es el usuario o el rol de base de datos que será propietario del nuevo rol. Si no se especifica un usuario, el rol será propiedad del usuario que ejecute CREATE ROLE.
Comentarios
Los roles son elementos protegibles de nivel de base de datos. Después de crear un rol, configure los permisos de nivel de base de datos del rol utilizando GRANT, DENY y REVOKE. Para agregar miembros a un rol de base de datos, use el procedimiento almacenado sp_addrolemember. Para obtener más información, vea Roles de nivel de base de datos.
Los roles de base de datos son visibles en las vistas de catálogo sys.database_role_members y sys.database_principals.
Advertencia |
---|
El comportamiento de los esquemas cambió en SQL Server 2005. En consecuencia, el código que supone que los esquemas son equivalentes a los usuarios de base de datos puede dejar de devolver resultados correctos. Las antiguas vistas de catálogo, incluida sysobjects, no se deben usar en una base de datos en la que se haya utilizado alguna vez cualquiera de las siguientes instrucciones DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. En esas bases de datos, debe usar las nuevas vistas de catálogo. En las nuevas vistas de catálogo se tiene en cuenta la separación de entidades de seguridad y esquemas que se estableció en SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL). |
Permisos
Necesita el permiso CREATE ROLE en la base de datos o la pertenencia al rol fijo de base de datos db_securityadmin. Cuando se usa la opción AUTHORIZATION, también se necesitan los permisos siguientes:
Asignar la propiedad de un rol a otro usuario requiere el permiso IMPERSONATE para ese usuario.
Asignar la propiedad de un rol a otro rol requiere la pertenencia al rol receptor o el permiso ALTER para ese rol.
Asignar la propiedad de un rol a un rol de aplicación requiere el permiso ALTER para el rol de aplicación.
Ejemplos
A. Crear un rol de base de datos propiedad de un usuario de la base de datos
En el siguiente ejemplo se crea el rol de base de datos buyers que es propiedad del usuario BenMiller.
USE AdventureWorks2008R2;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO
B. Crear un rol de base de datos que es propiedad de un rol fijo de base de datos
En el siguiente ejemplo se crea el rol de base de datos auditors que es propiedad del rol fijo de base de datos db_securityadmin.
USE AdventureWorks2008R2;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO