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

Développement SQL Server Discussion :

Vue : Sys.dm_tran_locks


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut Vue : Sys.dm_tran_locks
    Bonjour,
    Voila j'essaye de retrouver une aiguille dans une meule de foin, en clair j'ai des temps de reponses tres importants, j'utilise certains outils "SQL server profiler" masi aussi des requetes comme dans l'aide SQL sur les verrous. notament cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from sys.dm_tran_locks
    j'essaye de trouver les correspondances comme ceci :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    -- Gestionnaire de verrous ---------------------------------
    select
        V1.[resource_type],
        V1.[resource_subtype],
        V1.[resource_database_id],
            V2.[name] as Trad_resource_database_id,
        V1.[resource_description],
            V3.[name] as Trad_data_space_id,
            V3.[type_desc] as Trad_Type_desc, 
        V1.[resource_associated_entity_id],
            isnull(V4.[name],'') as Trad_Name,
            isnull(V4.[type_desc],'') as Trad_type_desc,
        V1.[resource_lock_partition],
        case V1.[request_mode]
            When 'NULL' then 'Aucun Acces n est accorde'
            When 'Sch-S' then 'Garantit que l élément d un schéma n est pas supprimé'
            When 'Sch-M' then 'Garantit qu aucune autre session ne fait référence à l objet indiqué'
            When 'S' then  '(Partagé). La session détenant le verrou peut disposer d un accès partagé à la ressource.'
            When 'U' then  'Indique qu un verrouillage de mise à jour a été posé sur des ressources qui peuvent finalement être mises à jour'
            When 'X' then  'La session détenant le verrou peut disposer d un accès exclusif'
            When 'IS' then  'Indique l intention de placer des verrous S sur certaines ressources subordonnées dans la hiérarchie de verrouillage'
            When 'IU' then 'Indique l intention de placer des verrous U sur certaines ressources subordonnées dans la hiérarchie de verrouillage'
            When 'IX' then 'Indique l intention de placer des verrous X sur certaines ressources subordonnées dans la hiérarchie de verrouillage'
            When 'SIU' then 'Signale des accès partagés à une ressource dans le but de poser des verrous de mise à jour sur les ressources subordonnées dans la hiérarchie de verrouillage.'
            When 'SIX' then 'Signale des accès partagés à une ressource dans le but de poser des verrous exclusifs sur les ressources subordonnées dans la hiérarchie de verrouillage.'
            When 'UIX' then 'verrou de mise à jour sur une ressource dans le but de poser des verrous exclusifs sur les ressources subordonnées dans la hiérarchie de verrouillage.'
            When 'BU' then 'Utilisé par les opérations par bloc.'
            When 'RangeS_S' then 'Indique une analyse de plage sérialisable.'
            When 'RangeS_U' then 'Verrou de groupes de clés partagés et de ressources de mise à jour'
            When 'RangeI_N' then 'Verrou d insertion de groupe de clé et de ressources NULL'
            When 'RangeI_S' then 'Verrou de conversion de groupes de clés, créé par un chevauchement de verrous RangeI_N et S'
            When 'RangeI_U' then 'Verrou de conversion de groupes de clés, créé par un chevauchement de verrous RangeI_N et U'
            When 'RangeI_X' then 'Verrou de conversion de groupes de clés, créé par un chevauchement de verrous RangeI_N et X'
            When 'RangeX_S' then 'Verrou de conversion de groupes de clés, créé par un chevauchement de verrous RangeI_N et RangeS_S.'
            When 'RangeX_U' then 'Verrou de conversion de groupes de clés, créé par un chevauchement de verrous RangeI_N et RangeS_U'
            When 'RangeX_X' then 'Verrou de conversion utilisé lors de la mise à jour d une clé dans une étendue.'
            end as [request_mode],
        V1.[request_type],
        V1.[request_status],
        V1.[request_reference_count],
        V1.[request_lifetime],
        V1.[request_session_id],
            V5.[host_name],
            V5.[login_name],
        V1.[request_exec_context_id],
        V1.[request_request_id],
        case V1.[request_owner_type]
        when 'TRANSACTION' then 'TRANSACTION est proprietaire'
        when 'CURSOR' then 'CURSOR est proprietaire'
        when 'SESSION' then 'SESSION est proprietaire'
        when 'SHARED_TRANSACTION_WORKSPACE' then 'SHARED_TRANSACTION_WORKSPACE partie partagée est proprietaire'
        when 'EXCLUSIVE_TRANSACTION_WORKSPACE' then 'EXCLUSIVE_TRANSACTION_WORKSPACE Partie exclusive est proprietaire'
        end,
        V1.[request_owner_id],
            isnull(V6.[name],'') as Trad_request_owner_id,
        V1.[request_owner_guid],
        V1.[request_owner_lockspace_id],
        V1.[lock_owner_address],
            isnull(V7.wait_duration_ms,'') as wait_duration_ms,
            isnull(V7.wait_type,'') as wait_type 
     
    from sys.dm_tran_locks V1
        inner join sys.databases V2 --<=========================================
        on V1.[resource_database_id] = V2.[database_id]
     
            inner join sys.data_spaces V3 --<===================================
            on 
            (case 
                when V1.[resource_description] = 'data_space_id = 2' then '2'
                when V1.[resource_description] = 'data_space_id = 1' then '1'
                else V3.data_space_id
            end ) = V3.data_space_id
                left outer join sys.all_objects V4 --<=================================
                on V1.[resource_associated_entity_id] = V4.[object_id] 
                    left outer join sys.dm_exec_sessions V5 --<========================
                    on V1.[request_session_id] = V5.session_id
                        left outer  join sys.dm_tran_active_transactions V6 --<========
                        on V1.[request_owner_id] = V6.transaction_id
                            left outer join sys.dm_os_waiting_tasks V7 --<=============
                            on V1.[lock_owner_address] = V7.resource_address
    j'ai lu dans l'aide SQL que l'on pouvait joindre ces 2 informations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     on V1.[lock_owner_address] = V7.resource_address
    hors j'ai un soucis avec cette derniere ligne, car je n'arrive pas a retrouver toutes les infos qui apparaissent dans la colonne :
    "lock_owner_address" y a t'il un autre endroit ou je puisse recuperer cette adresse si elle n'apparait pas dans "resource_address"

    j'espere avoir ete clair
    merci de votre aide

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Bonjour,

    si le but est de retrouver les sessions bloquées et les sessions bloquantes associées, ceci devrait vous aider.

    ++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut
    oui effectivement c'est un des buts de ma recherche
    MERCI

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut
    Bonjour,
    Je pensais, avors mon probleme de résolu mais, helas non, malgre votre aide, je n'ai aucun blocage, mais par contre les utilisateurs sont figés ils ont un ecran fixe, et la requete ne trouve rien
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    select 
    -- < ============== V1 =============================================
    DB_NAME(V1.[resource_database_id]) as Nom_BaseDeDonnées,
    V1.[resource_type] as Type_de_Base,
    V1.[resource_associated_entity_id] as ID_Base,
    V1.[request_mode] as Mode_Autorisation,
    V1.[request_session_id] as ID_Utilisateur,
    -- < ===============================================================
     
    -- < ============== V2 =============================================
    V2.[wait_type] as Cause_Attente,
    V2.[wait_duration_ms] as Durée_Attente_ms,
    -- < ===============================================================
     
    -- < ============== V3 =============================================
    V3.[host_name],
    V3.[login_name],
    V3.[program_name],
    V3.[client_interface_name],
    V3.[status],
        Case V3.[transaction_isolation_level]
            when '1' then 'Read Uncommited'
            when '2' then 'Read Commited'
            when '3' then 'Repeatable'
            when '4' then 'Serializable'
            when '5' then 'Snapshot'
            else 'Unspecified'
        end as transaction_isolation_level,
    -- < ===============================================================
     
    -- < ============== V4 =============================================
    V4.[command],
    txt.text,
    V4.[blocking_session_id],
    -- < ===============================================================
     
    -- < ============== V6 =============================================
    V6.[hostname] as Hostname_Bloking,
    V6.[program_name] as program_name_bloking,
    V6.loginame as Loginame_bloking,
    txtb.text
    -- < ===============================================================
     
    from sys.dm_tran_locks V1 
     
        inner join sys.dm_os_waiting_tasks V2 -- < V2 =================
        on V1.lock_owner_address = V2.resource_address
     
            inner join sys.dm_exec_sessions V3 -- < V3 ================
            on V1.[request_session_id] = V3.[session_id]
     
                inner join sys.dm_exec_requests V4 -- < V4 ============
                on V3.[session_id] = V4.[session_id ]
     
                    inner join sys.dm_exec_sessions V5 -- < V5 ========
                    on V4.[blocking_session_id] = V5.[session_id]
     
                        inner join sys.sysprocesses V6 -- < V6 ========
                        on V4.[blocking_session_id] = V6.[spid]
     
     
    Cross apply sys.dm_exec_sql_text(V4.[sql_handle])txt
    Cross apply sys.dm_exec_sql_text(V6.[sql_handle])txtb

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 : 21 998
    Billets dans le blog
    6
    Par défaut
    Quel est l'outil utilisé pour lancer la requête ? Je m'orienterait vers cet outil comme source du bug.
    Ou est-il installé ? Sur le serveur SQL ???

    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/ * * * * *

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 148
    Par défaut
    Bonjour,
    je n'utilise pas d'outils specifique, je suis dans la fenetre de requete de SQL server 2005 , je suis en train d'ecrire la requete , et je l'execute avant de faire autre chose.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Création de vue SYSTEM à partir du schéma SYS
    Par zakaria0509 dans le forum Administration
    Réponses: 1
    Dernier message: 04/11/2009, 15h58
  2. vue systeme sys.sql_modules
    Par haykelFST dans le forum Développement
    Réponses: 2
    Dernier message: 05/12/2008, 22h31
  3. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44
  4. compression de données du point de vue algorithmique
    Par GoldenEye dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 26/06/2002, 15h51

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