Obtener la lista de bases de datos a las que tiene acceso un usuario

25/09/2008 - 11:04 por jorkam2000 | Informe spam
Me gustaría saber si existe alguna forma (mediante instrucciones de
Transact-SQL) de obtener la lista de bases de datos a las que tiene
acceso un usuario determinado.

He estado mirando las vistas del sistema (sys.databases,
sys.database_principals, sys.server_principals, ..) pero no logro
hayar la solución.

Gracias a todos.
 

Leer las respuestas

#1 Alejandro Mesa
25/09/2008 - 13:59 | Informe spam
Una posible forma seria impersona??? (impersonating) el usuario sobre el cual
necesitas informacion y usar:

EXECUTE AS USER = 'usuario_en_cuestion';

EXEC sp_msforeachdb N'select ''?'', system_user, suser_sname(),
has_dbaccess(''?'')';

revert;
GO

Yo no he probado esta forma en su totalidad, por ejemplo, que pasa si el
usuario_en_question no tiene acceso a una de las db. Tambien debes tener en
cuenta que quien ejecuta este script, debe tener permiso para impersonar al
usuario 'usuario_en_cuestion' y que el procedimiento usado en este script no
esta documentado en los BOL, por lo que no se debe depender de este si lo
piensas hacer en produccion.


AMB
"" wrote:

Me gustaría saber si existe alguna forma (mediante instrucciones de
Transact-SQL) de obtener la lista de bases de datos a las que tiene
acceso un usuario determinado.

He estado mirando las vistas del sistema (sys.databases,
sys.database_principals, sys.server_principals, ..) pero no logro
hayar la solución.

Gracias a todos.

Preguntas similares