No siempre poner un valor mas alto, nos soluciona el problema, ya que deberán recordar que cada conexión abierta (aun en status de SLEEPING), consume 64k por conexión.
Si no se puede modificar el aplicativo, yo lo he resuelto, poniendo un JOB que se ejecute todos los días a las 00:00 y cuyo script es el siguiente:
Código SQL:
Ver originalDECLARE @spid INT
DECLARE @SQLString NVARCHAR(50)
USE master
WHILE EXISTS(SELECT spid
FROM master..sysprocesses
WHERE STATUS = 'sleeping' AND
last_batch <= DATEADD(DD, -1, GETDATE())
AND spid > 50 AND spid <> @@spid) -- Los spids del 1 al 50, son del sistema
BEGIN
SELECT TOP 1 @spid = spid FROM master..sysprocesses
WHERE STATUS = 'sleeping' AND
last_batch <= DATEADD(DD, -1, GETDATE())
AND spid > 50 AND spid <> @@spid
SET @SQLString = N'KILL ' + CONVERT(VARCHAR(10), @spid)
EXECUTE sp_executesql @SQLString
CONTINUE
END
¿Qué hace?, todas aquellas conexiones en un status de SLEEPING con una inactividad mayor a 24 horas, son eliminadas.