IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Précisions sur sys.dm_exec_requests


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut Précisions sur sys.dm_exec_requests
    Bonjour,

    à la recherche des causes de requêtes bloquée, j'exécute à intervalles réguliers la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT 
    session_id as [Numéro de session]
    ,blocking_session_id as [Numéro de session bloquante]
    ,command as [Type de requête]
    ,(select  text from sys.dm_exec_sql_text(sql_handle)) as [Texte de la requête]
    ,open_transaction_count [Nombre de transactions en cours]
    ,transaction_id as [Numéro de la transaction]
    ,start_time as [Date-Heure de lancement]
    ,status as [Statut de la requête]
    ,DATEDIFF(ms, start_time,GETDATE()) AS [Durée calculée en millisecondes]
    ,total_elapsed_time as [Durée mémorisée en millisecondes]
    ,DB_NAME(database_id) as [Nom de la base]
    ,wait_type as [Type d'attente]
    ,wait_time as [Temps_d'attente]
    ,getdate() as [Date heure de recherche]
    FROM   sys.dm_exec_requests
    WHERE 1=1 
    and session_id > 50
    and wait_time>100
    Or, parfois, lorsque dans la colonne type de requete, j'ai "UPDATE", le texte de la requête est "CREATE TRIGGER ..." avec toute la syntaxe du trigger créé.

    Pouvez-vous me confirmer, s'il vous plaît que ce qui est exécuté est bien l'instruction contenue dans le trigger dans le cas d'un update et pas une vraie création de trigger ?

    De la même manière, lorsque j'ai "CONDITIONNAL" dans le type de requête, il s'agit du texte de création d'une fonction qui est retourné dans la colonne de texte de la requête.
    Il s'agit bien de l'appel à la fonction, pas de la re-création de la fonction ?

    D'avance, merci pour vos lumières.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 002
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par Christophe Charron Voir le message
    Or, parfois, lorsque dans la colonne type de requete, j'ai "UPDATE", le texte de la requête est "CREATE TRIGGER ..." avec toute la syntaxe du trigger créé.

    Pouvez-vous me confirmer, s'il vous plaît que ce qui est exécuté est bien l'instruction contenue dans le trigger dans le cas d'un update et pas une vraie création de trigger ?

    De la même manière, lorsque j'ai "CONDITIONNAL" dans le type de requête, il s'agit du texte de création d'une fonction qui est retourné dans la colonne de texte de la requête.
    Il s'agit bien de l'appel à la fonction, pas de la re-création de la fonction ?

    D'avance, merci pour vos lumières.
    Oui. SQL monte en mémoire l'intégralité du code de la routines (fonction, requête, procédure, déclencheur...) en mémoire pour l'exécuter, mais lorsque vous utilisez sys.dm_exec_suery stats, les stats sont relevées requête par requête à l'intérieur du code, donc seule une partie du code est concernée. Pour l'extraire, vous avez les colonnes et pour extraire la requête concernée, vous avez les colonnes statement_start_offset et statement_end_offset qui délimite la requête en question.

    Pour extraire cette partie, faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    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)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Précision sur Oracle 9iAS r2
    Par Patmane dans le forum Oracle
    Réponses: 9
    Dernier message: 18/03/2007, 04h41
  2. Précisions sur l'Override
    Par WebPac dans le forum Langage
    Réponses: 7
    Dernier message: 26/10/2004, 08h09
  3. Précisions sur Import/export
    Par electro dans le forum Import/Export
    Réponses: 9
    Dernier message: 15/10/2004, 13h34
  4. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 22h35
  5. Précision sur les sauvegarde à chaud
    Par alxkid dans le forum Administration
    Réponses: 2
    Dernier message: 09/08/2004, 18h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo