ver usuarios transacciones sintaxis procesos proceso inactivas detener conexiones conectados cerrar activas sql sql-server sql-server-2008

usuarios - ¿Cómo veo las conexiones activas de SQL Server?



ver transacciones activas sql server (6)

Estoy usando SQL Server 2008 Enterprise. Quiero ver las conexiones activas de SQL Server y la información relacionada de todas las conexiones, como desde qué dirección IP, conectarse a qué base de datos o algo.

¿Existen herramientas existentes para resolver este problema?


A continuación, se encuentra mi secuencia de comandos para encontrar todas las sesiones conectadas a una base de datos y puede verificar si esas sesiones están realizando alguna E / S y existe una opción para eliminarlas.

El script muestra también el estado de cada sesión.

Echa un vistazo a continuación.

--============================================================================== -- See who is connected to the database. -- Analyse what each spid is doing, reads and writes. -- If safe you can copy and paste the killcommand - last column. -- Marcelo Miorelli -- 18-july-2017 - London (UK) -- Tested on SQL Server 2016. --============================================================================== USE master go SELECT sdes.session_id ,sdes.login_time ,sdes.last_request_start_time ,sdes.last_request_end_time ,sdes.is_user_process ,sdes.host_name ,sdes.program_name ,sdes.login_name ,sdes.status ,sdec.num_reads ,sdec.num_writes ,sdec.last_read ,sdec.last_write ,sdes.reads ,sdes.logical_reads ,sdes.writes ,sdest.DatabaseName ,sdest.ObjName ,sdes.client_interface_name ,sdes.nt_domain ,sdes.nt_user_name ,sdec.client_net_address ,sdec.local_net_address ,sdest.Query ,KillCommand = ''Kill ''+ CAST(sdes.session_id AS VARCHAR) FROM sys.dm_exec_sessions AS sdes INNER JOIN sys.dm_exec_connections AS sdec ON sdec.session_id = sdes.session_id CROSS APPLY ( SELECT DB_NAME(dbid) AS DatabaseName ,OBJECT_NAME(objectid) AS ObjName ,COALESCE(( SELECT TEXT AS [processing-instruction(definition)] FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle) FOR XML PATH('''') ,TYPE ), '''') AS Query FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle) ) sdest WHERE sdes.session_id <> @@SPID AND sdest.DatabaseName =''yourdatabasename'' --ORDER BY sdes.last_request_start_time DESC --==============================================================================


Además de sp_who , también puede utilizar el procedimiento almacenado del sistema sp_who2 "no documentado" que le brinda información más detallada. Ver Diferencia entre sp_who y sp_who2 .


Haga clic en el icono "monitor de actividad" en la barra de herramientas ...

De los comentarios de Thorsten:

En SQL Server Management Studio, haga clic con el botón derecho en Servidor, seleccione "Monitor de actividad" en el menú contextual o use el método abreviado de teclado Ctrl + Alt + A.


Tiré esto juntos para que pudieran hacer algunas consultas sobre los resultados

Declare @dbName varchar(150) set @dbName = ''[YOURDATABASENAME]'' --Total machine connections --SELECT COUNT(dbid) as TotalConnections FROM sys.sysprocesses WHERE dbid > 0 --Available connections DECLARE @SPWHO1 TABLE (DBName VARCHAR(1000) NULL, NoOfAvailableConnections VARCHAR(1000) NULL, LoginName VARCHAR(1000) NULL) INSERT INTO @SPWHO1 SELECT db_name(dbid), count(dbid), loginame FROM sys.sysprocesses WHERE dbid > 0 GROUP BY dbid, loginame SELECT * FROM @SPWHO1 WHERE DBName = @dbName --Running connections DECLARE @SPWHO2 TABLE (SPID VARCHAR(1000), [Status] VARCHAR(1000) NULL, [Login] VARCHAR(1000) NULL, HostName VARCHAR(1000) NULL, BlkBy VARCHAR(1000) NULL, DBName VARCHAR(1000) NULL, Command VARCHAR(1000) NULL, CPUTime VARCHAR(1000) NULL, DiskIO VARCHAR(1000) NULL, LastBatch VARCHAR(1000) NULL, ProgramName VARCHAR(1000) NULL, SPID2 VARCHAR(1000) NULL, Request VARCHAR(1000) NULL) INSERT INTO @SPWHO2 EXEC sp_who2 ''Active'' SELECT * FROM @SPWHO2 WHERE DBName = @dbName


Puede utilizar el procedimiento almacenado sp_who .

Proporciona información sobre los usuarios actuales, las sesiones y los procesos en una instancia del motor de base de datos de Microsoft SQL Server. La información se puede filtrar para devolver solo aquellos procesos que no están inactivos, que pertenecen a un usuario específico o que pertenecen a una sesión específica.


SELECT DB_NAME(dbid) as DBName, COUNT(dbid) as NumberOfConnections, loginame as LoginName FROM sys.sysprocesses WHERE dbid > 0 GROUP BY dbid, loginame ;

Consulte también la documentación de Microsoft para sys.sysprocesses .