CREATE ROLE (Transact-SQL)

Crea una nueva función de base de datos en la base de datos actual.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

CREATE ROLE role_name [ AUTHORIZATION owner_name ]

Argumentos

  • role_name
    Es el nombre de la función que se va a crear.

  • AUTHORIZATION owner_name
    Es el usuario o la función de base de datos propietaria de la nueva función. Si no se especifica un usuario, la función será propiedad del usuario que ejecute CREATE ROLE.

Notas

Las funciones son asegurables en el nivel de base de datos. Después de crear una función, configure los permisos en el nivel de base de datos de la función con GRANT, DENY y REVOKE. Para agregar miembros a una función de base de datos, use el procedimiento almacenado sp_addrolemember. Para obtener más información, vea Funciones en el nivel de base de datos.

Las funciones de base de datos se pueden ver en las vistas de catálogos sys.database_role_members y sys.database_principals.

Nota de advertenciaAdvertencia

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

Requiere el permiso CREATE ROLE en la base de datos. Cuando usa la opción AUTHORIZATION, también se requieren los siguientes permisos:

  • Asignar la propiedad de una función a otro usuario requiere el permiso IMPERSONATE en ese usuario.

  • Asignar la propiedad de una función a otra función requiere la pertenencia en la función receptora o el permiso IMPERSONATE en esa función.

  • Asignar la propiedad de una función a una función de aplicación requiere el permiso ALTER en esa función.

Ejemplos

A. Crear una función de base de datos propiedad de un usuario de la base de datos

En el siguiente ejemplo se crea la función de base de datos buyers que es propiedad del usuario BenMiller.

USE AdventureWorks;
CREATE ROLE buyers AUTHORIZATION BenMiller;
GO

A. Crear una función de base de datos llamada que es propiedad de una función fija de base de datos

En el siguiente ejemplo se crea la función de base de datos auditors que es propiedad de la función fija de base de datos db_securityadmin.

USE AdventureWorks;
CREATE ROLE auditors AUTHORIZATION db_securityadmin;
GO