2009-10-14 4 views
0

Dans SQL Server 7.0, j'ai besoin de savoir quels utilisateurs ont un accès en écriture aux tables d'une base de données particulière. Je sais que je peux le faire dans Enterprise Manager en parcourant chaque table de la base de données et en examinant l'accès accordé à ces tables - mais il y a quelques centaines de tables dans la base de données. Comme je ne suis concerné que par une poignée d'utilisateurs, je préfère l'approcher des utilisateurs.SQL Server: Découvrez quels utilisateurs ont accès en écriture à quelles tables?

Existe-t-il une requête que je peux exécuter sur les tables système pour y parvenir? Y a-t-il une autre approche via Enterprise Manager?

Ce que je suis après est quelque chose qui dit en gros:

UserOne has write access to Table1, Table2 and Table3 
UserTwo has write access to Table2 and Table3 
etc. 

Répondre

2
SELECT u.name, o.name 
FROM syspermissions p, sysobjects o, sysusers u 
WHERE p.id = o.id 
AND u.uid = p.grantee 
AND u.name IN ('UserOne', 'UserTwo', 'UserThree') 
AND o.xtype = 'U' 
AND p.actadd = 27 

La magie 27 est construit à partir de 1 (SELECT) + 2 (Mise à jour) + 8 (INSERT) + 16 (DELETE)

Merci à Matt Lacey (et Google!) Pour me mettre sur le bon chemin: http://blog.mrlacey.co.uk/2007/06/checking-database-permissions-in-sql.html

Questions connexes