Skip to main content

SQL Blocking query

SELECT   s.session_id,
                 r.status,
                 r.blocking_session_id                                 'Blk by',
                 r.wait_type,
                 wait_resource,
                 r.wait_time / (1000.0)                             'Wait Sec',
                 r.cpu_time,
                 r.logical_reads,
                 r.reads,
                 r.writes,
                 r.total_elapsed_time / (1000.0)                    'Elaps Sec',
                 Substring(st.TEXT,(r.statement_start_offset / 2) + 1,
                           ((CASE r.statement_end_offset
                              WHEN -1
                               THEN Datalength(st.TEXT)
                               ELSE r.statement_end_offset
                             END - r.statement_start_offset) / 2) + 1) AS statement_text,
                 Coalesce(Quotename(Db_name(st.dbid)) + N'.' + Quotename(Object_schema_name(st.objectid,st.dbid)) + N'.' + Quotename(Object_name(st.objectid,st.dbid)),  
                          '') AS command_text,
                 r.command,
                 s.login_name,
                 s.host_name,
                 s.program_name,
                 s.last_request_end_time,
                 s.login_time,
                 r.open_transaction_count
        FROM     sys.dm_exec_sessions AS s
                 JOIN sys.dm_exec_requests AS r
                   ON r.session_id = s.session_id
                CROSS APPLY sys.Dm_exec_sql_text(r.sql_handle) AS st
        WHERE    r.session_id != @@SPID
        ORDER BY r.status,
                 r.blocking_session_id,
                 s.session_id;

We find any output in “BLK By” then using below query :

Sp_who2 SPID
Then
KILL {session ID | UOW} [WITH STATUSONLY]
 
Example:  KILL 53;
          GO

Comments

Popular posts from this blog

Insert script with multiple cursors and condition check

DECLARE CURSOR C1 IS   SELECT ID FROM TABLE_NAME_1 WHERE COLUMN IN ('');   CURSOR C2     IS       SELECT ID FROM TABLE_NAME_2 WHERE COLUMN IN ('');              CURSOR C3 (CP_TABLE_01_ID NUMBER,CP_TABLE_02_ID NUMBER)         IS           SELECT COUNT(*) AS COUNT_UP           FROM TABLE_NAME_3           WHERE COLUMN_CONDITION_01=CP_TABLE_02_ID           AND COLUMN_CONDITION_02=CP_TABLE_01_ID; COUNT_UP NUMBER; BEGIN FOR R1 IN C1 LOOP     FOR R2 IN C2     LOOP          OPEN C3(R1.ID,R2.ID);        FETCH C3 INTO COUNT_UP;        CLOSE C3;               IF (COUNT_UP=0) THEN           INSERT           INTO TABL...

REF Cursor

REF CURSOR WILL BE DYNAMICALLY OPENS OR OPEN BASED ON A LOGIC. DECLARE TYPE C1 IS REF CURSOR ; CURSOR C IS SELECT * FROM DUAL; REF_CURSOR RC; BEGIN IF (TO_CHAR(SYSDATE, 'DD' ) = 30 ) THEN OPEN REF_CURSOR FOR 'SELECT * FROM TABLE1' ; ELSIF ( TO_CHAR(SYSDATE, 'DD' ) = 29 ) THEN OPEN REF_CURSOR FOR SELECT * FROM TABLE2; ELSE OPEN REF_CURSOR FOR SELECT * FROM DUAL; END IF ; OPEN C; END ;