(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo crear database roles en SQL Server: paso a paso

João Barros 16 de July de 2026 4 min de lectura

Crear database roles en SQL Server es la forma más limpia y escalable de controlar accesos. En lugar de dar permisos directamente a cada usuario, agrupas los permisos en un rol y añades a las personas a ese rol. Cuando alguien cambia de función, solo tienes que cambiar el miembro, y la gobernanza de datos resulta mucho más fácil de gestionar y auditar.

Requisitos previos

  • Una instancia de SQL Server (2012 o superior) o Azure SQL Database.
  • SQL Server Management Studio (SSMS) o Azure Data Studio para ejecutar las consultas.
  • Permiso CREATE ROLE en la base de datos, o pertenecer al rol db_securityadmin.
  • Una base de datos de pruebas donde puedas experimentar sin riesgo.

Paso 1: Crear el database role

Un database role es un contenedor de permisos a nivel de base de datos. Crea uno con la instrucción CREATE ROLE y dale un nombre que describa la función de negocio — por ejemplo, quien solo necesita leer datos de ventas:

USE VendasDW;
GO

CREATE ROLE leitura_vendas;
GO

SQL Server ya incluye roles fijos (como db_datareader o db_owner), pero crear tus propios roles te da un control preciso sobre lo que puede hacer cada grupo. El nuevo rol queda creado, pero todavía vacío: sin permisos y sin miembros. Esto es intencional — primero creamos el contenedor y después lo llenamos de permisos.

Paso 2: Asignar permisos al rol

Ahora defines lo que el rol puede hacer con GRANT. Como el objetivo es la gobernanza, sigue el principio de mínimo privilegio: concede solo lo necesario. En este ejemplo damos permiso de lectura sobre un schema completo:

GRANT SELECT ON SCHEMA::vendas TO leitura_vendas;
GO

Fíjate en que concedes el permiso al rol, y no a una persona — ahí está la ventaja. Cada miembro hereda automáticamente todo lo que tenga el rol, así que nunca repites el GRANT usuario por usuario. Si necesitas bloquear una acción de forma explícita, usa DENY, que siempre tiene prioridad sobre GRANT.

Paso 3: Añadir miembros al rol

Para añadir a alguien, necesitas un usuario en la base de datos. Si aún no existe, créalo a partir de un login y después añádelo al rol con ALTER ROLE ... ADD MEMBER:

-- crea un login y un usuario (usa una contraseña fuerte)
CREATE LOGIN ana WITH PASSWORD = 'Muda_esta_Password_123!';
CREATE USER ana FOR LOGIN ana;
GO

-- añade el usuario al rol
ALTER ROLE leitura_vendas ADD MEMBER ana;
GO

A partir de ahora, Ana puede leer el schema vendas sin ningún permiso directo propio. Puedes añadir tantos miembros como necesites, siempre con la misma instrucción.

Buena práctica: asigna permisos a los roles, nunca directamente a los usuarios. Así el acceso de cada persona se reduce a los roles a los que pertenece — fácil de leer y fácil de revocar.

Paso 4: Quitar miembros y gestionar el rol

Cuando alguien cambia de equipo, quitas el miembro sin tocar los permisos del rol:

ALTER ROLE leitura_vendas DROP MEMBER ana;
GO

Si necesitas cambiar el nombre del rol, usa ALTER ROLE leitura_vendas WITH NAME = leitura_faturacao;. Y para eliminarlo, asegúrate primero de que no tiene miembros y ejecuta DROP ROLE leitura_vendas;.

Verificar el resultado

Para confirmar quién pertenece a cada rol, consulta las vistas de sistema sys.database_role_members y sys.database_principals:

SELECT r.name AS role_name, m.name AS membro
FROM sys.database_role_members AS drm
JOIN sys.database_principals AS r ON drm.role_principal_id = r.principal_id
JOIN sys.database_principals AS m ON drm.member_principal_id = m.principal_id
ORDER BY r.name, m.name;

Deberías ver la fila que enlaza leitura_vendas con Ana, mientras siga siendo miembro. Para probar los permisos en la práctica, puedes suplantar la sesión del usuario y luego volver a tu propio contexto con REVERT:

EXECUTE AS USER = 'ana';
SELECT TOP (5) * FROM vendas.Faturas;   -- debería devolver datos
REVERT;

Conclusión

Con database roles, la gestión de accesos deja de ser una lista interminable de permisos individuales y pasa a estar organizada por función: más segura, más fácil de auditar y alineada con las buenas prácticas de gobernanza de datos. El siguiente paso natural es mapear los perfiles reales de tu organización — lectura, escritura, administración — y crear un rol para cada uno. ¿Qué funciones de acceso existen hoy en tu base de datos que ya podrías convertir en un rol?