Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je afficher toutes les autorisations pour une base de données SQL ?

La solution donnée ne couvre pas où l'autorisation est accordée sur le schéma ou la base de données elle-même, qui accordent également des autorisations sur les tables. Cela vous donnera ces situations, aussi. Vous pouvez utiliser une clause WHERE contre permission_name pour limiter à DELETE uniquement.

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

De plus, db_datawriter devrait être vérifié pour l'appartenance car il donne des droits implicites INSERT, UPDATE et DELETE, ce qui signifie que vous ne le verrez pas apparaître dans les autorisations DMV ou leurs dérivés.