11
votes

Comment résoudre le problème du délai d'expiration expiré?

Utilisation de SQL Server 2005 et VB6

Lorsque j'exègre des données annuelles ou plus de 3 mois de données, il affiche une erreur "Timetout expiré". Il n'exécute pas complètement.

ma chaîne de connexion xxx

Comment puis-je résoudre ce problème?

plz ... < / p>


1 commentaires

Pouvez-vous montrer la requête que vous courez? Souvent, des changements simples peuvent être apportés à une requête qui améliore la performance. Évidemment, si vous faites la requête plus rapide, vous n'avez pas besoin de vous soucier des délais d'attente.


4 Réponses :


0
votes

Évidemment, vous essayez d'élever beaucoup de données et que votre base de données prend beaucoup de temps. Postez votre chaîne de connexion afin que je puisse vous dire quel paramètre à modifier afin que vous puissiez augmenter le temps de connexion.

ou vous pouvez essayer d'optimiser votre application, cela devrait supporter de la sorte pour élever des données.


2 commentaires

J'ai posté ma chaîne de connexion.


Le délai de connexion est peu probable qu'il s'agisse du problème - la connexion semble être en place, mais la commande émise alors la fois. Vous devez définir la propriété .CommandTimeout - et ce n'est pas sur la chaîne de connexion



1
votes

Je suppose que vous essayez d'essayer de retirer beaucoup de données et de prendre SQL Server plus que le délai d'expiration ADO par défaut (30 ou 40 secondes?) Pour retirer ces données.

ou ce n'est pas vraiment beaucoup de données, mais vous n'avez pas eu d'index décent sur la table - je vérifierais donc les index par rapport à votre requête (le plan d'exécution est votre ami ici).

ou c'est un mélange de deux.

Combien de temps faut-il la requête si vous l'exécutez directement dans SQL Management Studio?


0 commentaires

17
votes

Il n'y a pas de "Black Voodoo Magic", que vous puissiez rendre votre requête aller plus vite (retour moins de données, améliorer la conception de la base de données, trouver et appliquer des indices qui rendent vos requêtes exécutées plus rapidement), ou d'augmenter le délai d'attente que vous autorisez. La requête à exécuter avant qu'un délai d'attente soit lancée.

Ce sont vos deux options - prenez votre choix. p>

mise à jour: un peu de googling révèle: P>

Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
cmd.CommandTimeout = 120   ' number of seconds


2 commentaires

En connectant lui-même, je dois donner le délai d'attente ou choisir dans la base de données. Où je dois mentionner le délai d'attente. Plz


Vous ne peut pas résoudre ceci dans votre chaîne de connexion. Travaillez sur la correction de la requête (optimisation) et prenez les conseils ci-dessus et ajoutez une valeur CommandTimeOut.



3
votes

Vous devez définir .commandtimeout sur la commande. Cela ne fonctionne pas si vous le définissez dans la chaîne de connexion.


0 commentaires