2010-06-15 25 views

Respuesta

6

Usted puede obtener todos los permisos otorgados en la base de datos y filtrar para su mesa:

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; 

Además es necesario agregar el construido en permisos de función (db_owner, db_datareader, db_datawriter etc). También se puede acceder a los objetos a través del ownership chaining.

Siempre se puede encontrar a cabo su propio permiso efectivo en cualquier objeto mediante el uso de fn_my_permissions('table_name', 'OBJECT')

+0

consigo una fila en blanco para mi mesa .. –

+0

la consulta funciona bien. Una 'fila en blanco' (un conjunto de resultados vacío) es una respuesta válida. Es en realidad el resultado esperado para una tabla en la que no se emitieron subvenciones explícitas. –

+1

Entonces ... si obtengo una fila en blanco ... ¿cómo sé ... quién tiene los permisos en esta tabla? Gracias .. –

Cuestiones relacionadas