29 jun 2014

Ubicando y Matando Procesos en SQL Server

Una consulta para saber los procesos que están ejecutando ejecutando en nuestra base de datos:


DECLARE @BaseDeDatos Varchar(30) = 'Nombredenuestrabasededatos'
SELECT spid, kpid, blocked,status, db_name(dbid) AS DatabaseName, 
	loginame, hostname, program_name, cmd, waittime
FROM sys.sysprocesses
WHERE db_name(dbid) = @BaseDeDatos
ORDER BY hostname
LA información que nos da son el id de la sesión de SQL Server, el id del hilo de ejecución de windows, id de la sesión que esta bloqueando la consulta, el estado actual de nuestra consulta, el nombre de la base de datos sobre la que opera nuestra consulta, el usuario(el login de base de datos) que ejecuta la consulta, el nombre de la máquina desde donde se realiza la consulta, programa o servicio desde de donde se realizó la consulta, tipo de consulta o comando que se esta ejecutando (AWAITING COMMAND significa que no esta ejecutando ninguna consulta) y el tiempo que lleva la instrucción en ejecutándose o esperando ejecutarse (en milisegundos) Una vez identificado el id de la session que esta bloqueando los demás se puede eliminar (matar) el proceso mediante el comando Kill y el numero de sesión por ejemplo:
Kill 66
Muy útil cuando alguna transacción queda abierta y nuestra base de datos que bloqueada.

Roy {aka. Foy}

Autor & Editor

Desarrallador y líder técnico, con experiencia en tecnologías Microsoft desde los tiempos del VB6 y el asp clásico hasta el .Net Core, pasando por COM+, javascript, angularjs, Ionic, xaml, cordova, MVC, Web Api, Sql Server, Oracle... . Ávido lector, apasionado programador.