2010-06-03 4 views
0

Nous obtenons les erreurs de délai d'attente ODBC suivantes lors de l'exécution du code SQL sur une base de données SQL Server.Erreur de délai d'attente ODBC sur une requête simple

"Erreur de connectivité: [Microsoft] [ODBC SQL Server Driver] Délai d'attente expiré" "S1T00"

La chose déroutante est que notre décharge de la pile indique que le code SQL qu'il exécute lorsque le délai d'attente occurrs - est très simple:

SELECT @@ trancount TranCount

ou parfois ...

BEGIN TRANSACTION

Notre client dit que la charge sur le serveur de base de données au moment où ces erreurs se produisent, n'est pas écrasante. Qu'est-ce qui peut éventuellement entraîner l'expiration de ces instructions simples? Je crois que le paramètre de délai d'attente est assez court (entre 1 et 5 secondes) ... mais encore, SELECT @@ TRANCOUNT devrait être instantané.

Des idées?

Répondre

2

Il peut être dépendant du pilote, mais je pense que le délai d'attente ODBC peut être géré par le client. Cela signifie que tout retard de réseau ou même un léger hoquet de serveur provoqué par n'importe quoi d'un analyseur de virus à des processus divers pourrait facilement causer un retard de 1 ou 2 secondes. Donc, si votre délai d'attente est en réalité de 1 seconde, il ne semble pas surprenant que vous puissiez obtenir des erreurs de délai.

Il semble que même 5 secondes est un peu faible sur un délai raisonnable. Cela suppose que le client et le serveur ne sont pas sur la même machine physique.

+0

Vous pourriez avoir raison à ce sujet - 1 seconde semble plutôt courte. Je vais devoir enquêter pour m'assurer que mon interprétation du code est correcte. Allonger le délai d'attente semble être une évidence, mais malheureusement c'est le code d'une tierce partie et changer le délai d'attente pourrait très facilement avoir des résultats inattendus. – Clinemi

Questions connexes