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

VB.NET Discussion :

procédure stockée/connection timeout


Sujet :

VB.NET

  1. #1
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut procédure stockée/connection timeout
    Bonjour,

    J'écris car je suis un peu perdu...

    Une application qui a fonctionné sans souci pendant un moment s'est mis à renvoyer une erreur durant mes vacances.

    Voici les quelques premières lignes du détail de l'erreur:
    ************** Exception Text **************
    System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
    J'ai un peu de mal... Est-ce un timeout lors de la connexion ou lors de l'exécution de la procédure stockée ?

    L'un comme l'autre, cela me pose problème étant donné que différents contrôles sur le formulaire sont bien remplis et tirent leurs données dans la même DB. Du coup, je me dis que la connexion est sensée bien se passer.

    De l'autre, lorsque j'exécute la procédure dans management, elle me donne le résultat en 0 sec. Du coup, je me dis que le problème ne vient pas de là non plus.

    Je tourne donc en rond. Auriez-vous une suggestion ?

  2. #2
    Invité
    Invité(e)
    Par défaut
    SqlException est souvent due à un souci de connexion à ta base de données et d'après le message d'erreur il s'agit de la durée de connexion qui prend trop de temps à s'ouvrir.

    Pour modifier la durée minimale avant de lancer une exception si la connexion ne s'ouvre pas tu peux le faire via la chaine de connexion en ajoutant Connect Timeout= duree_en_minute.

    Cela peut ne pas corriger ton problème vu que tu dis que certaines formulaires arrivent bien à communiquer avec ta base de données et récupérer des données.

  3. #3
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    En effet, je ne pense pas que cela résoudra mon problème (je vais tout de même tester).

    Voici tout de même quelques détails supplémentaires :

    Je ne travaille qu'avec des datasets fortement typés qui utilisent uniquement des procédures stockées (j'essaie en fait d'éviter toute instruction sql du côté .net pour laisser cela sur le server sql).

    J'ai un dataset qui contient 4 TableAdapters (et leur DataTable correspondante).

    3 d'entre-eux servent à remplir 3 Combobox différentes qui servent en fait de paramètres pour la procédure stockée du 4e TableAdapter.

    Du coup, tout ce que je fais moi, c'est utilisé les méthodes Fill de chaque TableAdapter. A part avoir défini la ConnectionString, je ne touche plus à rien.

    Je suis prêt à copier un bout de code ici mais je ne vois pas trop ce qui serait intéressant dans le cas présent.

  4. #4
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Bon et bien, après avoir simplement fait sur le tableadapter qui pose problème clic droit > configure et avoir été jusqu'au bout sans rien modifier, cela refonctionne.

    Je clos donc le sujet mais cela reste tout de même étrange. P-e un charmant collègue qui aurait été changé quelque chose à la procédure stockée sans m'en informer...

    Bref, ça marche.

    Merci encore (et sorry pour le double post).

    Griftou.

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par griftou Voir le message
    . P-e un charmant collègue qui aurait été changé quelque chose à la procédure stockée sans m'en informer...
    Cela me semble très très improbable, car la stack indique clairement qu'il s'agit d'un time-out de connexion, pas d'un time-out d'exécution.

  6. #6
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Alors je donne ma langue au chat.

    Qu'est-ce qui pourrait donner se genre d'erreur et être résolu en faisant un configure du tableadapter sans rien changer ?

    Perso, aucune idée...

  7. #7
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Fausse joie...

    Cela a résolu le problème "en local" (cad sur ma machine de dev) mais dans l'environnement de prod (citrix), toujours la même erreur...

    Si les combobox ne se remplissaient pas, je pourrais conclure que la communication avec le server sql ne se fait pas mais ce n'est pas le cas...

    Comment procéderiez-vous pour trouver la cause de ceci ?

    Griftou.

  8. #8
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Je patauge toujours...

    J'ai même été fouillé dans le code du dataset pour voir où il ouvrait la connexion mais je ne vois rien de suspect...

    Y a-t-il des outils qui me permettraient de détecter où se trouve le blocage ?

    Griftou.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par griftou Voir le message
    Bon et bien, après avoir simplement fait sur le tableadapter qui pose problème clic droit > configure et avoir été jusqu'au bout sans rien modifier, cela refonctionne.
    Tu as effectué cette action à partir de la base de production ou de la base de développement ?
    Si c'est avec la base de Dev et que ça ne fonctionne plus avec la base de Prod alors regardes bien si les schémas sont identiques, que la procédure stockée marche très bien sur la Prod etc.

  10. #10
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    C'est bien identique des 2 côtés...

    D'ailleurs, pour builder l'exe que je distribue, je modifie la connectionstring dans les settings pour avoir une connexion vers la db de prod.

    Donc je teste bien sûr une dernière fois avant de distribuer l'exe et cela fonctionne.

    Je teste ensuite l'exe que je place sur le serveur et ça marche.

    Par contre une fois que je teste en y accédent via une connexion citrix, là ça plante. Et encore une fois, seulement pour un seul tableadapter.

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir,

    Avez-vous essayé de mettre le TimeOut de la commande à 0 (donc l’infini), un collègue a déjà fait ça pour résoudre ce genre de problème. Ca avait fonctionné même si MSDN déconseille cela :
    A value of 0 indications no limit, and should be avoided in a CommandTimeout because an attempt to execute a command will wait indefinitely.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sankasssss Voir le message
    Avez-vous essayé de mettre le TimeOut de la commande ...
    Je ne pense pas que cela soit lié au CommandTimeout de la commande sinon le message d'erreur ne renverrai pas une SqlException.

  13. #13
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Je n'en ai aucune idée, je vois juste ceci :
    System.Data.SqlClient.SqlException (0x80131904): Timeout expired
    Cela ne coûte rien d'essayer...

  14. #14
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ne cherchez plus. C'est résolu...

    C'est un problème avec le serveur d'imprimante (spooler) d'après ce que j'ai compris (j'y connais pas grand chose du côté technique citrix ^^).

    Mes collègues du helpdesk, après moult insistances de mon collègue (qui avait aussi des soucis dans diverses applications) et moi, ont finalement consenti à regarder s'il n'y avait pas qqch qui clochait de leur côté et bizarrement, après avoir restarté certains trucs, ça marche tout de suite mieux...

    Vive la gueguerre entre services...

    Bref, merci à tous d'avoir passé un peu de temps là dessus.

    Griftou.

    P.S. : Le pourquoi de ce message d'erreur m'intrigue tout de même...

  15. #15
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    certains se sont laissé piéger par le "sqlconnection" de la pile des appels d'erreur
    j'ai fait le test car ça me semblait bien être la pile du CommandTimeout

    et un timeout d'exécution affiche le même message et la même pile que ce que cite le posteur de départ, c'en est donc bien un

    pour l'explication, lorsque qu'on exécute une requete (ou une procédure stockée ou autre) par défaut on a le droit à 30 secondes, si la requete (ou la sp) met plus de temps à s'exécuter arrivé à 30s ca déclenche l'erreur que tu as
    le temps maximum est définissable sur le SqlCommand.CommandTimeOut comme le disait sankasssss
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  16. #16
    Invité
    Invité(e)
    Par défaut
    Une chose dont je suis sûr est que je ne suis pas le seul à ne pas comprendre le rapport entre le serveur d'imprimante et ta procédure stockée.

  17. #17
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Ah mais moi non plus je ne comprends pas...

    C'est p-e du au fait que la procédure sert à remplir un rapport MS Reporting Service et que le report viewer cherche l'imprimante par défaut.

    Enfin ça me semble gros quand même.

    Ca peut aussi venir d'une interaction bizarre avec l'environnement citrix...

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par griftou Voir le message
    C'est p-e du au fait que la procédure sert à remplir un rapport MS Reporting Service et que le report viewer cherche l'imprimante par défaut.
    Une explication plausible.

    Sinon un lien que j'ai trouvé et qui pourrait être utile la prochaine fois.

  19. #19
    Membre expérimenté
    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 : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Sinon, j'ai quand même une question...

    En utilisant des datasets fortement typés avec des procédures stockées, vous la mettez où l'instruction pour augmenter le timeout ? Pcq via le tableadpter, je n'ai pas trouver l'objet sqlcommand

  20. #20
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par griftou Voir le message
    En utilisant des datasets fortement typés avec des procédures stockées, vous la mettez où l'instruction pour augmenter le timeout ? Pcq via le tableadpter, je n'ai pas trouver l'objet sqlcommand
    Très bonne question. Tu devrais pouvoir y arriver avec la solution exposée ici utilisant les classes partielles.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [2008R2] Procédure stockée et timeout
    Par Kropernic dans le forum Administration
    Réponses: 21
    Dernier message: 22/01/2014, 15h03
  2. Réponses: 1
    Dernier message: 04/01/2010, 19h15
  3. Migration de données via Procédures stockées, erreur timeout
    Par Arnard dans le forum Accès aux données
    Réponses: 6
    Dernier message: 01/10/2009, 13h17
  4. Timeout et procédure stockée
    Par sybaris dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/08/2008, 09h00
  5. Connections a une BD mysql dans une procédure stocké sql
    Par Zouko dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 13/05/2008, 15h42

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