Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como posso visualizar todas as concessões para um Banco de Dados SQL?


A solução fornecida não cobre onde a permissão é concedida no esquema ou no próprio banco de dados, que também concedem permissões nas tabelas. Isso lhe dará essas situações também. Você pode usar uma cláusula WHERE contra permission_name para restringir apenas 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

Além disso, db_datawriter precisaria ser verificado quanto à associação porque fornece direitos INSERT, UPDATE e DELETE implícitos, o que significa que você não o verá nos DMVs de permissão ou seus derivados.