Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come posso visualizzare tutte le sovvenzioni per un database SQL?

La soluzione fornita non copre dove viene concessa l'autorizzazione rispetto allo schema o al database stesso, che concedono autorizzazioni anche alle tabelle. Questo ti darà anche quelle situazioni. Puoi usare una clausola WHERE contro nome_permesso per limitare solo a DELETE.

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

Inoltre, db_datawriter dovrebbe essere verificato per l'appartenenza perché fornisce i diritti INSERT, UPDATE ed DELETE impliciti, il che significa che non lo vedrai apparire nei DMV di autorizzazione o nei loro derivati.