Saltar al contenido
DBAExperts
SQL Server Diagnóstico

Cómo ver y resolver bloqueos en SQL Server (sp_who2 y DMVs)

Cuando una sesion espera a otra, la aplicacion se siente lenta o congelada. Aqui identificas quien bloquea a quien y como liberarlo con cuidado.

  1. 1

    Vista rapida con sp_who2

    Muestra las sesiones activas y la columna BlkBy indica que SPID esta bloqueando. Es la primera parada para un vistazo rapido.

    EXEC sp_who2;
    -- Fijate en la columna 'BlkBy': si tiene un numero,
    -- ese SPID esta esperando a otra sesion.
  2. 2

    Identifica la cadena de bloqueo con DMVs

    sys.dm_exec_requests muestra que sesion esta bloqueada (blocking_session_id) y por cual espera. Mas preciso que sp_who2.

    SELECT r.session_id AS bloqueada,
           r.blocking_session_id AS bloqueadora,
           r.wait_type, r.wait_time, r.wait_resource,
           t.text AS consulta
    FROM sys.dm_exec_requests r
    CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
    WHERE r.blocking_session_id <> 0;
  3. 3

    Inspecciona los locks especificos

    sys.dm_tran_locks detalla que recursos estan bloqueados y en que modo (compartido, exclusivo, etc.).

    SELECT resource_type, resource_database_id,
           request_mode, request_status, request_session_id
    FROM sys.dm_tran_locks
    WHERE request_status = 'WAIT';
  4. 4

    Mira que hace la sesion bloqueadora antes de actuar

    Entiende que esta ejecutando la sesion que bloquea. Solo como ultimo recurso, y con cuidado, se puede terminar con KILL.

    -- Ver el ultimo comando de la sesion bloqueadora
    DBCC INPUTBUFFER(58);
    
    -- ULTIMO RECURSO: termina la sesion (hace rollback)
    -- KILL 58;

// el error común

KILL es destructivo: hace rollback de la transaccion abierta, y si es grande el rollback puede tardar tanto como la transaccion original. Nunca mates una sesion sin entender que hace. Muchos bloqueos vienen de transacciones largas o falta de indices, no de 'sesiones malas'.

// cuándo conviene un experto

Los bloqueos y deadlocks recurrentes suelen ser sintoma de un problema de diseño o de indices. En dba.mx diagnosticamos la causa raiz (no solo matamos sesiones) y la corregimos con techo cerrado para que no vuelva.

Agenda un Escaneo — desde USD $550

Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.