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 :

Comment trouver la cause d'un timeout ?


Sujet :

Administration SQL Server

  1. #21
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Hello,

    Un truc que j'ignore toujours... Lorsque je lance une requête via une application .NET (en laissant le timeout par défaut (30 secondes)) et que cette requête met plus de 30 secondes à répondre, une exception est levée dans l'application mais que se passe-t-il côté sql server ?
    Tu peux être dans le cas 2 (mais pas de rollback) ou le cas 3 en fonction du cas.

    Si une transaction a été initié il se peut qu'elle restera ouverte. Tu peux faire un test rapidement avec SSMS en configuration le timeout de commande à 10s par exemple ou autre et en exécutant une requête du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    begin tran;
     
    insert into dbo.table values ('toto', 'toto','toto')
     
    waitfor delay '00:00:15'
    Voici le résultat chez moi:

    Transaction information for database 'dbi_v2_tools'.

    Oldest active transaction:
    SPID (server process ID): 59
    UID (user ID) : -1
    Name : user_transaction
    LSN : (44:416:5)
    Start time : Feb 25 2015 5:44:32:313AM
    SID : 0x01050000000000051500000032fba7ca7e4af8ca1703afbb56040000
    DBCC execution completed. If DBCC printed error messages, contact your system administrator.

    Le problème est que si tu n'es pas dans le cas 2, tu n'auras pas de transaction ouverte à détecter. De plus la cible pair-matching ne te sera pas d'un grand secours non plus (chose que je voulais te faire faire au départ) car même en cas de timeout l'événement "completed" associé sera de toute façon déclenchée.

    As-tu essayé de récupérer toutes les requêtes avec une durée supérieure ou égale au timeout comme demandé par Elsuket pendant la période définie? Désolé d'avance pour les doublons je reprends le wagon en route ..

    ++

  2. #22
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    Je réponds un peu à la va-vite car j'ai un soft dont je dois finir le dev au plus vite...

    J'ai bien une session d'événements étendus qui tournent et qui récupère toutes les requêtes qui durent trop longtemps ou demandent trop de lectures.

    Mais cela ne m'aide pas car je n'ai rien à l'heure où je devrais avoir quelque chose.

    Sinon, la semaine dernière, j'ai mis le timeout à 3000 secondes (presque 1h quoi). Pas eu de souci depuis... P-e était-ce cela le problème. Ce qui voudrait dire que la requête n’apparaît alors pas dans les événements étendus.

    J'attends encore un peu avant de crier victoire mais même dans l'éventualité où cela résoud mon problème, j'aimerais quand même bien comprendre pourquoi ce problème survient dans ces certains et surtout, dans quel cas histoire de pouvoir remédier au problème et retirer cette abomination de timeout à 3000 secondes...
    Kropernic

  3. #23
    Expert éminent sénior
    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 : 45
    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
    Points : 12 891
    Points
    12 891
    Par défaut
    Tu as mis quoi comme événement dans ta session étendue ?

    ++

  4. #24
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ca vient seulement de faire tilt...

    Du coup, j'suis retourné voir le script de Elsuket et c'est bien Statement_Completed... Du coup forcément, ça n’apparaît jamais .

    Je modifierai la session quand je serai plus à l'aise niveau délai.
    Kropernic

  5. #25
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Salut à tous !

    La période de rush est finie donc j'ai le temps de revenir sur le sujet. Entre temps, j'avais paramétré le timeout via le code .NET sur 3000 secondes. Et depuis, plus de problème de timeout. C'était donc bien la procédure qui prenait trop de temps et non pas un problème de connexion que je l'avais cru au début.

    Il me reste maintenant à découvrir ce qu'il pouvait y avoir de spécial les jours où ça prend trop de temps... Probablement un index qui manque quelque part pour un cas particulier qui n'arrive pas tous les jours... C'est tout de même très étrange.
    Kropernic

Discussions similaires

  1. Violation des règles de validation : comment trouver cause ?
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/08/2007, 21h02
  2. Comment trouver de vieux outils (MASM51 CL PROM86 XLINK86)
    Par CFred dans le forum Choisir un environnement de développement
    Réponses: 2
    Dernier message: 11/01/2005, 17h54
  3. Réponses: 3
    Dernier message: 21/01/2004, 08h47
  4. Comment trouver le répertoire démarrage sous 98?
    Par PHILOSOPHE dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 18/11/2003, 20h10
  5. [CR] Comment trouver un champs dans un report ??
    Par Madduck dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 18/09/2003, 08h31

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