Une application ADO.Net ne peut que parfois se connecter à un autre serveur sur le réseau local. Il semble aléatoire qu'une tentative de connexion donnée réussisse ou échoue. La connexion utilise une chaîne de connexion sous la forme:
Serveur = THESERVER \ TheInstance; Database = TheDatabase; User Id = TheUser; Mot de passe = ThePassword;
l'erreur renvoyée est:
Délai de connexion expiré. Le délai d'expiration s'est écoulé lors de la tentative d'utilisation de l'accusé de réception de la prise de contact préalable à la connexion.
Cela peut être dû au fait que l'établissement de liaison préalable à la connexion a échoué ou que le serveur n'a pas pu répondre à temps.
La durée passée lors de la tentative de connexion à ce serveur était - [Pre-Login] initialization = 42030; poignée de main = 0;
L'application .NET est une petite application de test qui exécute le code suivant:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
La table est petit, seulement 78 lignes.
Cependant, sur la même machine où l'application .NET reçoit cette erreur, je peux me connecter à THESERVER en utilisant SSMS et l'ID utilisateur / mot de passe nommé dans la chaîne de connexion.
Pourquoi la connexion peut-elle échouer à partir d'une application ADO.Net, mais réussir avec des informations d'identification identiques de SSMS?