sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo puedo ver todas las concesiones para una base de datos SQL?

La solución dada no cubre dónde se otorga el permiso contra el esquema o la propia base de datos, que también otorgan permisos contra las tablas. Esto también le dará esas situaciones. Puede usar una cláusula WHERE contra nombre_permiso para restringir solo ELIMINAR.

SELECT 
    class_desc 
  , CASE WHEN class = 0 THEN DB_NAME()
         WHEN class = 1 THEN OBJECT_NAME(major_id)
         WHEN class = 3 THEN SCHEMA_NAME(major_id) END [Securable]
  , USER_NAME(grantee_principal_id) [User]
  , permission_name
  , state_desc
FROM sys.database_permissions

Además, sería necesario verificar la membresía de db_datawriter porque otorga derechos implícitos de INSERTAR, ACTUALIZAR y ELIMINAR, lo que significa que no lo verá aparecer en los DMV de permisos o sus derivados.