Diferencias entre user connections del Performance Monitor y @@Connections

donato
17 de Junio del 2004
(Creo que estamos haciendo algo mal...)

En la aplicacion Performance Monitor he activado el contador SQLServer:General Statistics->User conections y me indica que hay 170mil, pero @@CONNECTIONS me dice que hay unas 7mil desde que se inició el servicio SQLServer.

(Este servidor de sql tiene no tiene limitado el numero de conexiones, ya que esta configurado a numero conexiones a 0.)

Tanto los 170mil como los 7mil me parecen valores bastante altos. ¿Es posible que no estemos cerrando correctamente conexiones desde nuestras aplicaciones y webs?

Gracias!

manivesa
17 de Junio del 2004
Hola:

@@CONNECTIONS es el número de conexiones que se han hecho al servidor desde la última vez que se inició el servicio.



Lo que tu buscas lo puedes obtener de varias maneras.

sp_who y sp_who2 son dos procedimientos almacenados que te darán infomración sobre los procesos y usuarios actuales que tienes en el SQL Server

La tabla sysprocesses tiene toda la información que necesitas, asi que podrías obtenerla de ahí.

Del performance monitor puedes obtener con el contador que tu dices el número de usuarios. Si te da un valor tan alto mira a ver la escala que estas utilizando por si es ese el problema.

Por último te pongo aquí un procedimiento almacenado que es el que uso yo para ver este tipo de cosas. Lee la información de sysprocesses y la devuelve en un formato más fácil de leer. Además el valor de retorno del procedimiento es el número total de usuarios conectados.



CREATE PROCEDURE UsuariosConectados AS
SELECT
Procs.spid,
Procs.kpid,
RTRIM(Procs.loginame) AS [Usuario],
RTRIM(Procs.hostname) AS [Equipo],
RTRIM(DBs.name) AS [Base de Datos],
RTRIM(Procs.program_name) AS [Programa],
RTRIM(Procs.cmd) AS [Orden Actual],
RTRIM(Procs.net_address) AS [Direccion Fisica]
FROM
(SELECT * FROM master.dbo.sysprocesses) Procs INNER JOIN
(SELECT * FROM master.dbo.sysdatabases) DBs ON
Procs.dbid = DBs.dbid
WHERE
(RTRIM(Procs.loginame) <> 'sa')

RETURN @@ROWCOUNT



Como puedes ver elimino al sa porque solo me interesan las de los usuarios, pero esto se puede cambiar.

Espero que te sirva