¿Cómo genero una tabla de permisos concedidos a las tablas de la base de datos para un usuario de la base de datos?
-
03-07-2019 - |
Pregunta
Tengo una base de datos de SQL Server 2000 con un par de cientos de tablas. Hay varias cuentas de usuario de SQL que pueden acceder a esta base de datos, pero cada una tiene diferentes permisos otorgados en las tablas en la base de datos.
¿Cómo creo un script para darme un informe de los permisos otorgados a un usuario en particular? es decir, para generar algo como:
Table SELECT DELETE UPDATE INSERT ALTER
----- ------ ------ ------ ------ -----
Invoices Yes No Yes Yes No
Orders Yes Yes Yes Yes No
Customers Yes No Yes Yes No
y así sucesivamente. Es viernes, mi SQL-fu es bajo hoy y tengo un millón de otras cosas que hacer antes de terminar aquí hoy y si alguien tuviera un script práctico para hacer esto ya estaría eternamente agradecido :)
Solución
Select TABLE_NAME, PRIVILEGE_TYPE
from INFORMATION_SCHEMA.TABLE_PRIVILEGES
where GRANTEE = @username
Esto funcionará en el servidor SQL 2000/2005/2008
Otros consejos
No estoy seguro de si este procedimiento funciona para SQL 2000 o no, no tiene el formato exacto, pero puede ser parte del camino, ¿puede girarlo para obtener su formato?
sys.sp_helprotect @Username = 'myUser'