Liste des processus actifs

Voici un petit script très utile pour déterminer les requêtes qui sont en train de tourner sur un serveur SQL Server.

En effet, les outils tels que le générateur de profils ou bien les évènements étendus permettent de capter le début ou la fin d’un traitement, mais ne permettent pas de lister les traitements en cours d’exécution.

Voici donc un petit script, très utile, présentant notamment le coût actuel de chaque traitement (consommation CPU, consommation I/O, …)

-- Liste des processus actifs
-- Auteur : Jean-Nicolas BERGER (www.sqlserver.fr)

select r.session_id,
		status,
		qt.text,
		substring(qt.text,r.statement_start_offset/2+1,
		(case when r.statement_end_offset <= r.statement_start_offset
			then len(convert(nvarchar(max),qt.text))*2
			else r.statement_end_offset
			END - r.statement_start_offset)/2+1)
			AS query_text,
		qt.dbid,
		qt.objectid,
		r.cpu_time,
		r.total_elapsed_time,
		r.reads,
		r.writes,
		r.logical_reads,
		r.scheduler_id
from sys.dm_exec_requests r
	cross apply sys.dm_exec_sql_text(sql_handle) as qt
WHERE r.session_id>50
order by r.scheduler_id,r.status,r.session_id

Ce script permet notamment, pour certains blocs de code comme par exemple les procédures stockées, d’identifier au coeur du module l’instruction T-SQL exacte en cours d’exécution.

Sans aller chercher les gros outils tels que les rapports SSMS, on a déjà un aperçu très rapide de ce qui tourne…

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Contrôle de sécurité *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.