Come posso generare una tabella di autorizzazioni concesse alle tabelle del database per un utente del database?
-
03-07-2019 - |
Domanda
Ho un database SQL Server 2000 con circa un paio di centinaia di tabelle. Esistono diversi account utente SQL che possono accedere a questo database ma ognuno ha autorizzazioni diverse concesse sulle tabelle nel DB.
Come posso creare uno script per darmi un rapporto delle autorizzazioni concesse a un determinato utente. vale a dire generare qualcosa del tipo:
Table SELECT DELETE UPDATE INSERT ALTER
----- ------ ------ ------ ------ -----
Invoices Yes No Yes Yes No
Orders Yes Yes Yes Yes No
Customers Yes No Yes Yes No
e così via. È venerdì, il mio SQL-fu è basso oggi e ho un milione di altre cose da fare prima di finire qui oggi e se qualcuno avesse uno script utile per farlo già allora sarei eternamente grato :)
Soluzione
Select TABLE_NAME, PRIVILEGE_TYPE
from INFORMATION_SCHEMA.TABLE_PRIVILEGES
where GRANTEE = @username
Funzionerà in SQL Server 2000/2005/2008
Altri suggerimenti
Non sono sicuro che questa procedura funzioni per SQL 2000 o meno, non ottiene il formato esatto, ma potrebbe farti strada in questo modo, puoi ruotarlo per ottenere il tuo formato.
sys.sp_helprotect @Username = 'myUser'