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 :

Blocage Base de donnée


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut Blocage Base de donnée
    Bonsoir,

    nous avons des blocages dans une base de données. Et je voudrais savoir si il existe une requête permettant identifier "la requête" qui poserait ce blocage.

    mon prestataire m'a fournit une requête, pour identifier le blocage.

    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
     
    SELECT 'bloquante' AS "type", *
            FROM sys.sysprocesses AS p
            CROSS APPLY sys.dm_exec_sql_text(p.sql_handle)
            WHERE p.dbid=DB_ID('xx')
                    AND p.blocked=0
                    AND p.spid in (
                            SELECT DISTINCT b.blocked
                                    FROM sys.sysprocesses AS b
                                    WHERE b.dbid=DB_ID('xx')
                                            AND b.blocked<>0 )
    UNION
    SELECT 'bloquée' AS "type", *
            FROM sys.sysprocesses AS p
            CROSS APPLY sys.dm_exec_sql_text(p.sql_handle)
            WHERE p.dbid=DB_ID('xx')
                    AND blocked <> 0
    UNION
    SELECT 'bloquée' AS "type", *, 0 as "dbid", NULL as "objectid",  NULL as number, 0 as encrypted, '' AS "text"
            FROM sys.sysprocesses AS p
            WHERE p.dbid=DB_ID('xx')
                    AND blocked <> 0
                    AND p.sql_handle = 0

    mais le problème c'est au niveau de la requête celle-ci change quand il y a le blocage. En fait quand j'identifie le blocage, je lance la requête cela m'indique la requête à l'instant T, mais si la personne change de menu dans l'application, la requête change et donc je ne vois pas la requête origine.

    Est-ce qu'l y aurais une requete plus fine pour identifier ce blocage??

    merci d'avance pour vos conseils

    guigiu69

  2. #2
    Membre chevronné
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2007
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Décembre 2007
    Messages : 327
    Par défaut
    Bonjour,

    Qu'entendez vous par blocage ?

    Qu'effectuez vous comme opération ?

    Pour moi, de ce que je comprend, nous sommes dans le cas d'un interbloquage (Deadlock) il faudra mettre en place une trace pour identifier la requete et les opérations problématiques.

    Plusieurs solutions s'offrent a vous pour la résolution du problème :
    • Reduire le temps de monopolisation des ressources
    • Réalisation des transactions
    • Modifier le mode d'isolation de SQL Server en utilisant le mode snapshot par exemple
    • ...



    Un peu d'aide :


    https://blog.developpez.com/elsuket/...tels_deadlocks
    https://docs.microsoft.com/fr-fr/sql...l-transact-sql
    https://technet.microsoft.com/fr-fr/...=sql.105).aspx

  3. #3
    Invité
    Invité(e)
    Par défaut
    Vu le peu de détails que tu donnes, je ne sais pas si mon expérience est pertinente.

    J'ai déjà eu des pools de connexions Java qui partaient régulièrement en vrille et se «deadlockaient» à qui mieux mieux jusqu'à ce qu'on redémarre le pool.
    Niveau bd, on ne pouvait pas faire grand chose dans ce cas là.

    J'ai eu aussi des problèmes de nombreux deadlocks entre le backend et le frontend. On avait contourné le problème en mettant une priorité inférieur dans la connexion du backend, Du coup, ça ne tuait pas la session client et l'honneur était sauf même s'il y restait de sérieux problèmes au niveau du code.

  4. #4
    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 guigui69 Voir le message
    Bonsoir,

    nous avons des blocages dans une base de données. Et je voudrais savoir si il existe une requête permettant identifier "la requête" qui poserait ce blocage.

    mon prestataire m'a fournit une requête, pour identifier le blocage.
    Cette requête est stupide car elle fait appel à des tables systèmes comme sys.sysprocesses qui sont obsolète depuis la version 2005 de SQL Server... Donc, à moins que vous ne soyez en version 2000, vous devez utiliser sys.dm_exec_sessions, sys.dm_exec_connections, sys.dm_exec_requests...

    Voir la requête que j'ai donné pour cela :
    https://blog.developpez.com/sqlpro/p...stance-bloquee

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

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonjour,

    merci pour vos retours.

    En fait en terme de blocage, je ne sais pas comment exprimer mais quand on fait un sp_who je vois des BK qui sont bloqués. et faut que je réalise un KILL id. Quand je réalise cela cela débloque les autres utilisateurs ( il peuvent de nouveau se connecter à l'application, ça débloque autres utilisateurs qui sont bloqué sur un menu de notre outils.


    Après la requête c'est mon prestataire qui me la fournit donc je fait. Je vais regarder ton lien SqlPro.

    Sqlpro, avec ta requête on peut identifier la ressource qui est bloqué? (La table, la requête qui pose problème)


    merci d'avance pour vos conseils

    guigui69

  6. #6
    Membre Expert
    Homme Profil pro
    DBA SQL Server
    Inscrit en
    Octobre 2012
    Messages
    862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA SQL Server
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 862
    Par défaut
    Tu peux aussi utiliser sp_whoisactive, qui est très connue et te donnera la query qui bloque/est bloquée. C'est beaucoup mieux et plus clair que sp_who2 qui te donne une liste énorme alors que celle-ci ne te donne que ceux qui sont actif.

    http://whoisactive.com/downloads/

  7. #7
    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 guigui69 Voir le message
    Après la requête c'est mon prestataire qui me la fournit donc je fait. Je vais regarder ton lien SqlPro.
    Ton prestataire est donc un imbécile....

    Sqlpro, avec ta requête on peut identifier la ressource qui est bloqué? (La table, la requête qui pose problème)
    Il suffit de la jouer et tu verras bien ! Mais à ton avis une requête qui indiquerais que la base est bloquée sans dire pourquoi, serait-elle d'une utilité quelconque ?

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

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonjour SQLPro,

    dans ton lien, il faut une version minimum de SQLserver pour exécuter ta requête.?

    merci d'avance

    guigui69

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    829
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 829
    Par défaut
    Bonsoir SqlPro,

    J'ai exécuté ta requête pendant un blocage mais celle-ci n'a rien retourner c'est normale, faut-il réaliser une manipulation particuliere?

    merci d'avance pour vos conseils

    guigui69

Discussions similaires

  1. jscript et access blocage de la base de données
    Par albert045 dans le forum Access
    Réponses: 0
    Dernier message: 28/08/2010, 23h43
  2. connexion base de donné
    Par saidi dans le forum MFC
    Réponses: 3
    Dernier message: 07/08/2002, 22h22
  3. [Concept] Stabilité d'une base de donnée
    Par lassmust dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/07/2002, 16h16
  4. Bases de données
    Par dev dans le forum C++Builder
    Réponses: 4
    Dernier message: 01/07/2002, 22h55
  5. associer une base de données(access) a un dbgrid
    Par ange1708 dans le forum MFC
    Réponses: 3
    Dernier message: 11/06/2002, 12h18

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