none
Cambio de estado automático pasado un tiempo por usuario RRS feed

  • Pregunta

  • Buenas tardes amigos,

    Por favor su ayuda, tengo un usuario que al dar clic a un botón en c# actualiza la columna Acceso de una tabla en la base de datos de 0 a 1, como hacer para que luego de unos 5 minutos automáticamente el estado retorne a 0, esto como medida de que el usuario ya no realice mas interacción con la aplicación.

    Por ejemplo:

    Usuario 1 se conecta y da clic 16:00 cambio de estado a 1, a las 16:05 automáticamente el estado retorna a 0

    Usuario 2 se conecta y da clic 16:03 cambio de estado a 1, a las 16:08 automáticamente el estado retorna a 0

    Esto es por cada usuario.

    Gracias.

    jueves, 9 de marzo de 2017 21:38

Respuestas

  • LuisJons,

    Si la base de datos pertenece a una instancia de SQL Server y cuentas con una edición "mayor" (Standard o superior) entonces puedes programar una tarea (Job de SQL Server) para que por cada minuto transcurrido actualice el estado de 1 a 0 afectando a todas las filas que tengan un tiempo de persistencia mayor o igual a 5 minutos con el estado 1, por ejemplo:

    UPDATE  NombreTabla SET Acceso = 0
    WHERE (Acceso = 1) AND (DATEDIFF(MINUTE, FechaUltimoAcceso, GETDATE()) >= 5);
    GO

    Sin embargo, para que la solución sea factible necesitamos una marca de tiempo (baseline) para calcular los minutos transcurridos, en el ejemplo he agregado la columna [FechaUltimoAcceso] que contiene -obviamente- la marca de tiempo del preciso momento en que el estado cambia de 0 a 1, y ya estando en contexto, para permitir o restringir el uso de la aplicación por parte del usuario autenticado, ¿no bastaría con validar el tiempo transcurrido entre la fecha de último acceso y el tiempo actual?, quizá -según el ámbito de uso- la columna [Acceso] pierda sentido.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    jueves, 9 de marzo de 2017 22:04