¿Qué permite el rol db_owner?

15

He estado tratando de solucionar un inicio de sesión que no puede ver ciertas tablas en una base de datos de SQL Server 2012. Al hacerlo, descubro que no entiendo muy bien qué me db_ownerpermite pertenecer al puesto. Puedo entender los otros roles, db_datareader and db_datawriterpero sigo confundido sobre lo que db_ownerpermite.

gusano web
fuente

Respuestas:

15

Consulte la referencia en BOL para roles de nivel de base de datos :

db_owner

Los miembros del rol fijo de base de datos db_owner pueden realizar todas las actividades de configuración y mantenimiento en la base de datos, y también pueden descartar la base de datos .

La forma más fácil de ver todos los permisos es usar la sys.fn_my_permissions()función. Primero verifique que es miembro de db_owner:

select
    rol.name
from sys.database_principals mem
inner join sys.database_role_members drm
on drm.member_principal_id = mem.principal_id
inner join sys.database_principals rol
on drm.role_principal_id = rol.principal_id
where mem.principal_id = user_id();

Ahora enumere todos los permisos efectivos de la base de datos:

select *
from sys.fn_my_permissions(null, 'database');

Eso debería ser lo suficientemente granular para sus propósitos. Algo a tener en cuenta, sys.fn_my_permissions()devuelve los permisos efectivos , así que piense en ello como una agregación.

Thomas Stringer
fuente
¿Significaría eso que el usuario que tiene db_ownermembresía tiene por defecto los mismos permisos que db_readery db_writer?
webworm
55
Un miembro de la db_ownerfunción de base fijo tendrá SELECT, INSERT, UPDATE, y DELETEpermisos en la base de datos. Entre muchos otros permisos, pero sí, eso es correcto.
Thomas Stringer