Comment générer une table des autorisations accordées aux tables de base de données pour un utilisateur de base de données?
-
03-07-2019 - |
Question
J'ai une base de données SQL Server 2000 avec une centaine de tables. Plusieurs comptes d'utilisateur SQL peuvent accéder à cette base de données, mais chacun dispose d'autorisations différentes accordées sur les tables de la base de données.
Comment créer un script pour me fournir un rapport sur les autorisations accordées à un utilisateur particulier. c'est-à-dire générer quelque chose comme:
Table SELECT DELETE UPDATE INSERT ALTER
----- ------ ------ ------ ------ -----
Invoices Yes No Yes Yes No
Orders Yes Yes Yes Yes No
Customers Yes No Yes Yes No
et ainsi de suite. Nous sommes vendredi, mon SQL-fu est faible aujourd'hui et j'ai un million d'autres choses à faire avant de terminer ici aujourd'hui et si quelqu'un avait déjà un script pratique pour le faire, je vous en serais éternellement reconnaissant:)
La solution
Select TABLE_NAME, PRIVILEGE_TYPE
from INFORMATION_SCHEMA.TABLE_PRIVILEGES
where GRANTEE = @username
Cela fonctionnera sur le serveur SQL 2000/2005/2008
Autres conseils
Je ne suis pas sûr si cette procédure fonctionne pour SQL 2000 ou non, elle n’obtient pas le format exact, mais elle risque de vous faire perdre une partie du chemin, vous pouvez la faire pivoter pour obtenir votre format.
sys.sp_helprotect @Username = 'myUser'