Une application ADO.Net n'est que parfois capable de 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 de la forme :
Serveur=THESERVER \TheInstance ;Database=TheDatabase;User Id=TheUser ; Password=ThePassword ;
l'erreur retournée est :
Le délai de connexion a expiré. Le délai d'attente s'est écoulé lors de la tentative de consommation de l'accusé de réception de la poignée de main de pré-connexion.
Cela peut être dû au fait que la poignée de main de pré-connexion a échoué ou que le serveur n'a pas pu répondre à temps.
La durée de la tentative de connexion à ce serveur est de - [Pre-Login] initialization=42030 ; handshake=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();
}
LeTableau est petit, seulement 78 rangs.
Cependant, sur le même machine Lorsque l'application .NET reçoit cette erreur, je peux me connecter à THESERVER à l'aide de SSMS et de l'ID utilisateur/mot de passe indiqué 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 à partir de SSMS ?