sys.dm_exec_requests In SQL Server


sys.dm_exec_requests:-

  • The sys.dm_exec_requests view returns one row for every currently executing request within your SQL Server instance and is useful for many purposes in addition to tracking down plan cache information.
  • This DMV contains the sql_handle and the plan_handle for the current statement, as well as resource usage information for each request.
  • For troubleshooting purposes, you can use this view to help identify long-running queries.
    Keep in mind that the sql_handle points to the T-SQL for the entire batch. However, the sys.dm_exec_requests view contains the statement_start_offset and statement_end_offset columns,
    which indicate the position within the entire batch where the currently executing statement can be found.
  • The offsets start at 0, and an offset of –1 indicates the end of the batch. The statement offsets can be used in combination with the sql_handle passed to sys.dm_exec_sql_text to extract the query text from the entire batch text, as demonstrated in the following code.


This query returns the Top 10 longest-running queries currently executing in SQL Server Using sys.dm_exec_requests:-

SELECT TOP 10 SUBSTRING(text, (statement_start_offset/2) + 1,
((CASE statement_end_offset 
WHEN -1
THEN DATALENGTH(text)
ELSE statement_end_offset 
END - statement_start_offset)/2) + 1) AS query_text,
session_id,blocking_session_id,start_time,status,command,sql_handle,
plan_handle,database_id,wait_type,wait_time,open_transaction_count,
logical_reads,reads,writes,text FROM sys.dm_exec_requests
CROSS APPLY sys.dm_exec_sql_text(sql_handle)ORDER BY total_elapsed_time DESC;

Output:-

 


 

Leave a Reply

Your email address will not be published. Required fields are marked *