Actualmente tenemos una pequeña situación en nuestras manos, parece que alguien, en algún lugar se olvidó de cerrar la conexión en el código. El resultado es que el grupo de conexiones se agota relativamente rápido. Como un parche temporal agregamos Max Pool Size = 500;
a nuestra cadena de conexión en el servicio web, y reciclamos la agrupación cuando todas las conexiones se gastan, hasta que nos damos cuenta de esto.Todas las conexiones en el grupo están en uso
Hasta ahora hemos hecho esto:
SELECT SPId
FROM MASTER..SysProcesses
WHERE DBId = DB_ID('MyDb') and last_batch < DATEADD(MINUTE, -15, GETDATE())
para obtener SPID de que no se utiliza durante 15 minutos. Estamos tratando de que la consulta que se ejecutó el pasado usando ese SPID con:
DBCC INPUTBUFFER(61)
pero las consultas que se ven son diferentes, es decir, ya sea algo en nivel de base en relación con la manipulación de la conexión se rompió, o nuestra deducción es errónea. ..
¿Hay algún error en nuestro pensamiento aquí? ¿El DBCC/sysprocesses da resultados que esperamos o hay alguna captura de efecto secundario? (Por ejemplo, conexiones en la influencia de la piscina?)
(por favor, se adhieren a lo que pudimos encontrar a cabo utilizando SQL ya que los chicos que hicieron el código son muchos y no todos los presentes en este momento)
'los chicos que hicieron el código son muchos y no todos están presentes ahora mismo ... no creo que estuvieran todos allí cuando olvidaron cerrar sus Conexiones SQL. ;) –
tiene el código fuente correcto? No debería ser difícil buscar todas las conexiones que se abren y cerrarlas, siempre que no estén pasando deliberadamente conexiones alrededor de ... –
@will @mitch - usted * no * quiere ver el código, créame :) pero, eventualmente, esa fue la única opción al final ... y lo solucionamos poniendo try-finally {close} en todas partes ... – veljkoz