Una aplicación ADO.Net solo a veces puede conectarse a otro servidor en la red local. Parece aleatorio si un intento de conexión dado tiene éxito o falla. La conexión utiliza una cadena de conexión con el formato:
Servidor = THESERVER \ TheInstance; Base de datos = TheDatabase; Id de usuario = TheUser; Contraseña = ThePassword;
el error devuelto es:
Tiempo de espera de conexión caducado. El período de tiempo de espera transcurrió mientras se intentaba consumir el reconocimiento del protocolo de enlace previo al inicio de sesión.
Esto podría deberse a que falló el protocolo de enlace previo al inicio de sesión o que el servidor no pudo responder a tiempo.
El tiempo transcurrido al intentar conectarse a este servidor fue - inicialización [Pre-Login] = 42030; apretón de manos = 0;
La aplicación .NET es una pequeña aplicación de prueba que ejecuta el siguiente código:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
TheTable es pequeña, solo 78 filas.
Sin embargo, en la misma máquina donde la aplicación .NET recibe este error, puedo conectarme a THESERVER usando SSMS y la Id. De usuario / Contraseña nombrada en la cadena de conexión.
¿Por qué podría fallar la conexión desde una aplicación ADO.Net, pero tener éxito con credenciales idénticas de SSMS?