Quantcast
Channel: Forum Getting started with SQL Server
Viewing all articles
Browse latest Browse all 7129

sp_whoisactive vs custom SQL to see what is running

$
0
0
When I run sp_whoisactive, it returns results in a few seconds, while the following SQL, that also shows what is running on sql server takes much longer (several minutes). Why is there a big difference in performance and how it can be improved? I like the custom SQL as I can slice and dice the results that way I like, if it performs better.
SELECT Des.session_id,
Der.total_elapsed_time,
CONVERT(VARCHAR, DATEDIFF(mi, der.start_time, CURRENT_TIMESTAMP)) AS ElapsedTIMEINMinutes,
       Des.status,
       Des.login_name,
       Des.host_name,
       Der.blocking_session_id,
       DB_NAME(Der.database_id) AS Database_Name,
       Der.command,
       Des.cpu_time,
       Emg.requested_memory_kb,
       Emg.granted_memory_kb,
       Emg.used_memory_kb,
       Der.wait_type,
       Der.wait_time,
       Der.last_wait_type,
       Der.wait_resource,
       Des.reads,
       Des.writes,
       dec.last_write,
       Des.program_name,
       CASE Des.transaction_isolation_level
           WHEN 0
           THEN 'Unspecified'
           WHEN 1
           THEN 'ReadUncommitted'
           WHEN 2
           THEN 'ReadCommitted'
           WHEN 3
           THEN 'Repeatable'
           WHEN 4
           THEN 'Serializable'
           WHEN 5
           THEN 'Snapshot'
       END AS Transaction_Isolation_Level,
       OBJECT_NAME(Dest.objectid, Der.database_id) AS OBJECT_NAME,
       Dest.text AS Full_Query_Text,
       SUBSTRING(Dest.text, Der.statement_start_offset/2, (CASE
                                                               WHEN Der.statement_end_offset = -1
                                                               THEN DATALENGTH(Dest.text)
                                                               ELSE Der.statement_end_offset
                                                           END-Der.statement_start_offset)/2) AS Executing_Statement,

	   
	   Deqp.query_plan
FROM sys.dm_exec_sessions AS Des
     LEFT JOIN sys.dm_exec_requests AS Der ON Des.session_id = Der.session_id
     LEFT JOIN sys.dm_exec_connections AS dec ON Des.session_id = dec.session_id
     LEFT JOIN sys.dm_exec_query_memory_grants AS Emg ON Des.session_id = Emg.session_id
     CROSS APPLY sys.dm_exec_sql_text(Der.sql_handle) AS Dest
     CROSS APPLY sys.dm_exec_query_plan(Der.plan_handle) AS Deqp
WHERE Des.session_id <> @@SPID
ORDER BY Des.cpu_time DESC, granted_memory_kb;
Thanks for your help.

Viewing all articles
Browse latest Browse all 7129

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>