none
como saber si alguien esta conectado a mi base de datos en sql server 2008

    Question

    1. Hola,

     Tengo un problema, ahora que migre de sql server 2000 a 2008 he encontrado varios cambios que afectan a mis sistemas:(, este es uno de ellos.

    Yo trabajo con usuarios que no tienen permiso a nada en la base de datos y utilizo un roles de aplicacion en sql para poder determinar a que tendra derecho el usuario.

    Una de mis reglas de negocio tiene como requerimiento que no se encuentre ningún usuario conectado en la base de datos. Para esto he utilizado por varios años la vista SYSPROCESSES el cual me da el login,programa y base de datos, para asi determinar si alguien esta utilizando la aplicación.

    El PROBLEMA :(

    En sql server 2008, cuando me logeo con el usuario hueco y aplico el role la vista de sysprocess sólo me regresa la información de mi conexion, y no puedo determinar quien mas esta conectado al sistema.

    Cuando me logeo con el usuario hueco y no aplico el Role de aplicación, al realizar la consulta a sysprocesses me regresa la información como lo hacia antes, lo cual quiere decir que el problema surge cuando aplico el role, el cual siempre lo debo utilizar porque el usuario hueco, no tiene permisos a los objetos.

    Alguien tendrá alguna sugerencia para darle la vuelta?

    Friday, April 30, 2010 2:19 PM

Answers

All replies

  • Hola.

    Eso es porque se requieren permisos de view server state para ver los spid que no son el del propio usuario (http://msdn.microsoft.com/es-es/library/ms179881.aspx). Deberás asignar ese permiso al rol de aplicación.

     


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    Friday, April 30, 2010 6:06 PM
    Moderator
  • Hola.

    ¿Aplicaste lo que te comenté? ¿Resolviste el problema?


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    Friday, May 07, 2010 4:55 PM
    Moderator
  • Hola,

    No me permite aplicarle el permiso al Role:(, el motivo es porque el Role es de tipo aplicación y se encuentra en la base de datos, el role no es de tipo servidor.

    Sigo buscando una solución para resolver este problema de fondo, por lo pronto utilizo una conexión extra sin role, sólo para averiguar si existen usuarios conectados.

    Disculpa la tardanza, pero como siempre el trabajo lo satura a uno, sólo vi tu respuesta intente aplicarla pero no pude reroalimentar el resultado de la solución.

    El usuario que utilizo para verificar que no hay registros, es un usuario hueco que solo tiene permisos de firmarse y el permiso de view server state. No es lo el mejor método, pero almenos me da tiempo para localizar una mejor solución.

    Encuento encuentre la solución se las publicó, saludos.

    Friday, May 07, 2010 8:18 PM
  • Hola.

    Por defecto no, pero aplicando en trace flag 4616 podrás dar acceso al rol de aplicación a los metadatos del servidor. 

    http://msdn.microsoft.com/en-us/library/ms190998.aspx

    Entiendo que es un poco extraña esta forma de activarlo, pero también es poco habitual que un rol de aplicación deba realizar tareas administrativas.

     


    Alberto López Grande (Visita mi blog en http://qwalgrande.blogspot.es/)
    Friday, May 07, 2010 8:53 PM
    Moderator
  • Es muy interesante esto que me comentas :D, voy a intentarlo.
    Friday, May 07, 2010 9:01 PM
  • Alberto,

    Muchas gracias, ya probe y me funciona correctamente, me queda sólo investigar más al respecto para conocer las implicaciones de usar el comando,

     

    Nuevamente, muchas gracias.

    Friday, May 07, 2010 9:32 PM