2017-05-16 1 views
0

J'ai un tas de commandes exec exécutant des procédures stockées, 25 d'entre elles pour être précis.Détection de la commande exec en cours d'exécution - SQL Server

exec stp_1 
exec stp_2 
exec stp_3 

et ainsi de suite ...

est-il un moyen de savoir quelle commande exec est en cours d'exécution? Dans la fenêtre de requête, je vois seulement "l'exécution de la requête". J'ai couru sp_who mais je ne peux pas dire quel exec est en cours d'exécution.

Répondre

1

Essayez cette

   SELECT  r.start_time [Start Time],session_ID [SPID], 
      DB_NAME(database_id) [Database], 
      SUBSTRING(t.text,(r.statement_start_offset/2)+1, 
      CASE WHEN statement_end_offset=-1 OR statement_end_offset=0 
      THEN (DATALENGTH(t.Text)-r.statement_start_offset/2)+1 
      ELSE (r.statement_end_offset-r.statement_start_offset)/2+1 
      END) [Executing SQL], 
      Status,command,wait_type,wait_time,wait_resource, 
      last_wait_type 
FROM  sys.dm_exec_requests r 
OUTER APPLY sys.dm_exec_sql_text(sql_handle) t 
WHERE  session_id != @@SPID 
AND   session_id > 50 -- don't show system queries 
ORDER BY r.start_time 
0

Essayez ceci:

SELECT 
DMExQryStats.last_execution_time AS [Executed At], 
DMExSQLTxt.text AS [Query] 
FROM 
sys.dm_exec_query_stats AS DMExQryStats 
CROSS APPLY 
sys.dm_exec_sql_text(DMExQryStats.sql_handle) AS DMExSQLTxt 
ORDER BY 
DMExQryStats.last_execution_time DESC