¿Hay alguna forma de enumerar las consultas que se ejecutan actualmente en MS SQL Server (ya sea a través del Administrador corporativo o SQL) y / o quién está conectado?
Creo que tengo una consulta de ejecución muy larga que se está ejecutando en uno de mis servidores de bases de datos y me gustaría rastrearla y detenerla (o la persona que sigue iniciando).
sql-server
BIBD
fuente
fuente
ms
cuantización cons
. Puede ocurrir un posible desbordamiento (sucedió para mí).Si está ejecutando SQL Server 2005 o 2008, podría usar los DMV para encontrar esto ...
fuente
Puede ejecutar el comando sp_who para obtener una lista de todos los usuarios, sesiones y procesos actuales. Luego puede ejecutar el comando KILL en cualquier spid que esté bloqueando a otros.
fuente
Sugeriría consultar las
sys
vistas. algo similar aDe esta manera, puede obtener una
TotalPagesAllocated
que puede ayudarlo a descubrirspid
qué está tomando todos los recursos del servidor. Hay muchas veces en que ni siquiera puedo abrir el monitor de actividad y usar estassys
vistas para ver qué está pasando.Te recomendaría leer el siguiente artículo. Tengo esta referencia de aquí .
fuente
Hay varias vistas de gestión integradas en el producto. En SQL 2000 que tendría que utilizar sysprocesses . En SQL 2K5 hay más vistas como sys.dm_exec_connections , sys.dm_exec_sessions y sys.dm_exec_requests .
También hay procedimientos como sp_who que aprovechan estas vistas. En 2K5 Management Studio también obtienes Activity Monitor.
Y por último, pero no menos importante, hay guiones aportados por la comunidad como Who Is Active de Adam Machanic .
fuente
En realidad, ejecutar
EXEC sp_who2
en Query Analyzer / Management Studio da más información quesp_who
.Más allá de eso, puede configurar SQL Profiler para ver todo el tráfico de entrada y salida al servidor. Profiler también te permite reducir exactamente lo que estás viendo.
Para SQL Server 2008:
Tenga en cuenta que el generador de perfiles es realmente una aplicación de registro y observación. Continuará registrando y observando mientras se esté ejecutando. Podría llenar archivos de texto o bases de datos o discos duros, así que tenga cuidado con lo que tiene que ver y por cuánto tiempo.
fuente
fuente
Como nota, puede encontrar el Monitor de actividad de SQL Server para SQL Server 2008 haciendo clic derecho en su servidor actual y yendo a "Monitor de actividad" en el menú contextual. Descubrí que esta era la forma más fácil de eliminar procesos si está utilizando SQL Server Management Studio.
fuente
En el Explorador de objetos, acceda a: Servidor -> Administración -> Monitor de actividad. Esto le permitirá ver todas las conexiones al servidor actual.
fuente
Aquí hay una consulta que mostrará cualquier consulta que esté bloqueando. No estoy completamente seguro de si solo mostrará consultas lentas:
fuente
El guión correcto sería así:
fuente
Puede usar la consulta a continuación para encontrar la última solicitud en ejecución:
Usando el siguiente script también puede encontrar el número de conexiones por base de datos:
Para obtener más detalles, visite: http://www.dbrnd.com/2015/06/script-to-find-running-process-session-logged-user-in-sql-server/
fuente
en 2005 puede hacer clic derecho en una base de datos, ir a informes y hay una lista completa de informes sobre transiciones y bloqueos, etc.
fuente
Prueba con esto:
Le proporcionará todas las consultas de los usuarios. Hasta spid 50, todo son sesiones de proceso interno del servidor sql. Pero, si lo desea, puede eliminar la cláusula where:
fuente
Y
fuente
Use Sql Server Profiler (menú de herramientas) para monitorear la ejecución de consultas y use el monitor de actividad en Management studio para ver cómo está conectado y si su conexión está bloqueando otras conexiones.
fuente
Debe probar un procedimiento muy útil
sp_whoIsActive
que se puede encontrar aquí: http://whoisactive.com y es gratis.fuente