Une requête pour traquer les transactions trop longues

Des transactions qui durent peuvent être à l’origine de blocage soudain intervenant de manière aléatoire (phénomènes stochastique). Il convient de les traquer et d’y répondre, soit en analysant la cause, soit en les tuant. Voici une requête permettant de les lister…

DECLARE @MINUTES SMALLINT;
SET @MINUTES = 10; --> durée minimale en minutes depuis le démarrage de la transaction
WITH T AS
(
SELECT at.transaction_begin_time,
       DATEDIFF(SECOND, at.transaction_begin_time, GETDATE()) AS DUREE_SECONDE,
       login_time, host_name, program_name, login_name, transaction_state,
       s.cpu_time, s.total_elapsed_time, s.reads, s.writes,
       client_net_address, DB_NAME(dbid) AS DATABASE_NAME, text AS SQL_query
FROM   sys.dm_tran_active_transactions  AS at
       JOIN sys.dm_tran_session_transactions AS st
            ON at.transaction_id = st.transaction_id
       JOIN sys.dm_exec_sessions AS s
            ON st.session_id = s.session_id
       JOIN sys.dm_exec_connections AS c
            ON st.session_id = c.session_id
       LEFT OUTER JOIN sys.dm_exec_requests AS r
            ON st.session_id = r.session_id
       OUTER APPLY sys.dm_exec_sql_text(most_recent_sql_handle)
WHERE  transaction_type  = 1 -- active
  AND  transaction_state IN (2, 7) -- écriture
  AND  transaction_begin_time < DATEADD(MINUTE, -@MINUTES, GETDATE())
)
SELECT *, CAST(CAST(CAST(DUREE_SECONDE/86400 AS DATETIME) AS INT) AS VARCHAR(10)) + ' jour '
          + RIGHT(CONVERT(CHAR(24), CAST(DUREE_SECONDE/86400.0 AS DATETIME), 121), 13) AS DUREE
FROM   T
ORDER BY DUREE_SECONDE DESC;

Le paramètre @MINUTES sert à éviter de lister les requêtes durant moins de n minutes.
Vous pouvez changer la valeur de ce paramètre qui est à 10 minutes (une valeur déjà élevée).

La sortie fournit les informations suivantes :

  • machine à l’origine
  • applications à l’origine
  • compte de connexion
  • adresse réseau de la machine à l’origine
  • base contuextelle
  • requête SQL
  • durée en Jour, Heure, Minutes, Seconde…
  • diverses métriques de temps
Frédéric Brouard, alias SQLpro, ARCHITECTE DE DONNÉES
Expert  S.G.B.D  relationnelles   et   langage  S.Q.L
Moste  Valuable  Professionnal  Microsoft  SQL Server
Société SQLspot  :  modélisation, conseil, formation,
optimisation,  audit,  tuning,  administration  SGBDR
Enseignant: CNAM PACA, ISEN Toulon, CESI Aix en Prov.

L’entreprise SQL Spot
Le site web sur le SQL et les SGBDR

MVP Microsoft SQL
Server

Laisser un commentaire