Preskočiť na obsah
Skript

Dlho bežiace požiadavky – čo práve beží

Aktuálne requesty nad zvolený čas: trvanie, CPU, čítania, čakanie, blocker a presný práve vykonávaný statement.

dlho-beziace-poziadavky-co-prave-bezi.sql 32 riadkov · T-SQL
Parametre skriptu doplň a kopíruj hotový skript
/* DeadlockCafe | Dlho bežiace požiadavky – čo práve beží
   Účel:  Aktuálne requesty nad zvolený čas: trvanie, CPU, čítania, čakanie, blocker a presný práve vykonávaný statement.
   Režim: READ ONLY | SQL Server 2016 – 2022, on-premises
*/
SET NOCOUNT ON;

DECLARE @MinElapsedSeconds int = {{MinElapsedSeconds:10}};

SELECT r.session_id, r.request_id,
       s.login_name, s.host_name, s.program_name,
       DB_NAME(r.database_id)   AS database_name,
       r.status, r.command, r.start_time,
       r.total_elapsed_time     AS elapsed_ms,
       r.cpu_time               AS cpu_ms,
       r.logical_reads, r.reads, r.writes,
       r.wait_type,
       r.wait_time              AS wait_ms,
       r.blocking_session_id,
       SUBSTRING(t.text,
           (r.statement_start_offset / 2) + 1,
           ((CASE WHEN r.statement_end_offset = -1 OR r.statement_end_offset IS NULL
                  THEN DATALENGTH(t.text) ELSE r.statement_end_offset END
             - r.statement_start_offset) / 2) + 1) AS active_statement,
       t.text                   AS full_batch
FROM sys.dm_exec_requests AS r
JOIN sys.dm_exec_sessions AS s ON s.session_id = r.session_id
OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
WHERE r.session_id <> @@SPID
  AND s.is_user_process = 1
  AND r.total_elapsed_time >= @MinElapsedSeconds * 1000
ORDER BY r.total_elapsed_time DESC;
## Kedy použiť

Keď aplikácia zamrzla, server má vysoké CPU alebo dotaz trvá dlhšie ako obvykle.

## Ako čítať výsledok

Vysoké `cpu_ms` = request pracuje. Vysoké `elapsed_ms` pri nízkom `cpu_ms` = request väčšinou čaká – pozri `wait_type` a `blocking_session_id`.

> [!WARNING]
> DMV ukazuje len práve bežiace requesty, nie históriu. Hodnoty CPU a trvania nie sú synchronizované na mikrosekundu.

**Oprávnenia:** `VIEW SERVER STATE` (na SQL Server 2022 stačí aj `VIEW SERVER PERFORMANCE STATE`).  
**Režim:** READ ONLY · **Verzia:** SQL Server 2016 – 2022

## Súvisiace recepty

- [Aktuálne čakania na úrovni taskov](script.php?id=17&s=aktualne-cakania-na-urovni-taskov)
- [sp_WhoIsActive](script.php?id=10&s=sp-whoisactive-kto-co-prave-robi-na-serveri)