2010-06-15 8 views

Répondre

6

Vous pouvez obtenir toutes les autorisations accordées dans la base de données et filtrer pour votre table:

select permission_name, state, pr.name 
from sys.database_permissions pe 
join sys.database_principals pr on pe.grantee_principal_id = pr.principal_id 
where pe.class = 1 
    and pe.major_id = object_id('<table_name>') 
    and pe.minor_id = 0; 

En outre, vous devez ajouter le construit dans les autorisations de rôle (db_owner, db_datareader, db_datawriter etc). Les objets peuvent également être accédés par ownership chaining.

Vous pouvez toujours trouver votre propre autorisation effective sur un objet en utilisant fn_my_permissions('table_name', 'OBJECT')

+0

Je reçois une ligne vide pour ma table .. –

+0

la requête fonctionne bien. Une 'ligne vide' (un ensemble de résultats vide) est une réponse valide. Est en réalité le résultat attendu pour une table sur laquelle aucune subvention explicite n'a été émise. –

+1

Alors ... si j'obtiens une rangée vide ... comment savoir ... qui a les permissions sur cette table? Merci .. –

Questions connexes