SQL Server - Tablas de un usuario:

   
Vista:

Tablas de un usuario:

Publicado por Leonardo (79 intervenciones) el 09/04/2008 17:14:45
Buenos días a los foristas... aquí tengo otro problema que espero me puedan ayudar.
En mi base de datos tengo dos tipos de cuentas, una de usuario y otra de administrador. la cuenta de usuarios sólo tiene permisos de lectura sobre las tablas, mientras que las de administrados tienen permisos de propietario (es decir pueden hacer consultar, borrar, insertar y modificar las tablas)

Lo que necesito es un query que me arroje las tablas a las que tiene permitido el acceso un usuario, haciendo uso de las tablas de sistema... el problema está precisamente con las cuentas de administrados, me trataré de explicar.

en mi tabla sysusers tengo algo como sigue:

name->uid
dbo->0
administrador->1
usuario->2

para obtener los objetos a los que tiene acceso la cuenta de usuarios hago la siguiente consulta:

select syspermissions.id from sysusers, syspermissions where sysusers.name = 'usuario' and syspermissions.grantee = sysusers.uid) and sysusers.uid = sysobjects.uid and
xtype = 'U'

si ejecuto el mismo query pero sustituyendo 'usuario' por 'dbo' o para 'administrador' me arroja un vacio...

ahora bien, si ejecuto el siguiente query para la cuenta dbo si me arroja las tablas a las que tiene permitido el acceso:

select sysusers.name+'.'+sysobjects.name as Tabla from sysobjects, sysusers where
sysusers.name = 'dbo' and sysusers.uid = sysobjects.uid and xtype = 'U';

Pero igualmente si aquí cambio la cuenta dbo por la de 'Administrador' me arroja un vacio,
ya que ni en la tabla sysobjects ni en la tabla syspermissions existe alguna referencia al usuario administrador (con uid 1)

Alguien tiene una idea de como puedo obtener las tablas para la cuenta del administrador???

Espero que me puedan ayudar con este problema. Saludos y que tengan un excelente día

Leo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder