2010-06-15 13 views

risposta

6

È possibile ottenere tutte le autorizzazioni concesse nel database e filtrare per la vostra tavola:

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; 

Inoltre, è necessario aggiungere il costruito nel autorizzazioni di ruolo (db_owner, db_datareader, db_datawriter ecc). È possibile accedere agli oggetti anche tramite ownership chaining.

È sempre possibile scoprire il proprio consenso efficace su qualsiasi oggetto utilizzando fn_my_permissions('table_name', 'OBJECT')

+0

ricevo una riga vuota per il mio tavolo .. –

+0

la query funziona correttamente. Una 'riga vuota' (un set di risultati vuoto) è una risposta valida. È in realtà il risultato atteso per una tabella in cui non sono state concesse sovvenzioni esplicite. –

+1

Quindi ... se ottengo una riga vuota ... come faccio a sapere ... chi ha quali permessi su questo tavolo? Grazie .. –

Problemi correlati