Checa este codigo:
Código SQL:
Ver originalDECLARE @SQL nvarchar(30)
DECLARE @Identificador INT
DECLARE @FechaHora datetime
DECLARE @AHORA Datetime
DECLARE Cursor_Usuarios CURSOR FOR
SELECT spid,last_batch
FROM master..sysprocesses
WHERE program_name LIKE 'PONER_NOMBRE_APLICACION' AND
dbid = 6 AND --- Id de tu base de datos
loginame NOT LIKE 'sa%'
-- dbid=6 es la base de datos que me interesa, se puede poner otra o no poner nada para que sean todas
-- loginame not like 'sa%' --esto es para que no me cierre mis sesiones
SELECT @AHORA=GETDATE()
OPEN Cursor_Usuarios
FETCH NEXT FROM Cursor_Usuarios INTO @Identificador,@FechaHora
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
IF ABS(DATEDIFF(MINUTE,@FechaHora,@AHORA))>=30 --- minutos inactivo
BEGIN
SET @SQL= 'kill ' + CONVERT(CHAR,@Identificador)
EXEC sp_executesql @SQL
END
END
FETCH NEXT FROM Cursor_Usuarios INTO @Identificador,@FechaHora
END
CLOSE Cursor_Usuarios
DEALLOCATE Cursor_Usuarios
GO