Dans notre application Vb.net (userd dans une connexion réseau locale à l'intérieur d'un bureau), qui est utilisée depuis longtemps maintenant, certains utilisateurs n'obtiennent les erreurs que parfois par jour
Une erreur au niveau du transport s'est produite lors de l'envoi de la demande au serveur. (fournisseur: TCP Fournisseur, erreur: 0 - Une connexion existante a été fermée de force par l'hôte distant.
J'ai déjà vérifié la suite
Toutes les bases de données sont définies pour se fermer automatiquement
Je n'ai pas trouvé beaucoup de problèmes de réseau et la vitesse du réseau est bonne.
Lorsque j'ai archivé SSMS, le délai d'expiration de la requête distante sous les propriétés du serveur est défini sur 600 secondes.
J'ai vérifié le journal du serveur SQL et aucune erreur trouvée à ce sujet ou même message d'erreur
Alors, quelle peut être la raison de cette erreur? Et comment le dépanner?
Si une application ouvre (avec succès) une connexion à SQL Server et la laisse ouverte en prévision de l'envoi d'une (ou éventuellement d'une "autre") requête, et en attendant, SQL tue cette connexion pour une raison quelconque (par exemple, le redémarrage du service ou une commande kill est envoyée), puis lorsque la connexion (qui pense qu'elle est ouverte) tente d'envoyer une commande, vous obtiendrez cette erreur.
Saisissez donc l'erreur dans votre application et reconnectez-vous. Réessayez ensuite la commande.
Je vois surtout cette erreur si, pour une raison quelconque, la connectivité réseau a été perdue, même pendant quelques secondes. Cela peut être une personne déconnectant un câble, une connexion wifi instable, un mauvais commutateur réseau, un ordinateur qui se met en veille (il est allumé par défaut sur Win7 et plus), la mise à jour de Windows mettant à jour un pilote réseau, etc.
J'ai rencontré la même erreur il y a quelque temps et je voulais publier ma réponse, mais je n'ai pas pu me connecter et j'ai simplement oublié. Je suis tombé sur cette question à nouveau et je donnerai ma réponse du mieux que je me souvienne, car elle est assez obscure et je n'ai pu en trouver nulle part ailleurs.
Cette erreur est renvoyée par les bases de données MS-SQL lors du passage d'une forme de date non valide à un SP de .NET (et potentiellement d'autres sources). IIRC, je passais un .NET MinDate (ie . valeur par défaut). Fondamentalement, vérifiez simplement vos paramètres de date et assurez-vous qu'ils sont raisonnables!
J'ai obtenu exactement la même erreur dans mon application. Il met à jour de nombreux enregistrements en une seule transaction. J'ai résolu ce problème en augmentant le paramètre SqlCommand.CommandTimeout.