Приложение ADO.Net иногда может подключаться к другому серверу в локальной сети. Кажется случайным, является ли данная попытка подключения успешной или неудачной. Соединение использует строку соединения в форме:
Сервер = THESERVER\TheInstance; База данных = TheDatabase; Идентификатор пользователя = TheUser; Password = ThePassword;
возвращенная ошибка:
Время ожидания подключения истекло. Период времени ожидания истек, пытаясь использовать подтверждение квитирования до входа в систему.
Это может быть связано с тем, что рукопожатие до входа в систему не удалось или сервер не смог ответить вовремя.
Продолжительность, затрачиваемая при попытке подключения к этому серверу, была - [Pre-Login] initialization = 42030; квитирование = 0;
Приложение .NET - небольшое тестовое приложение, которое выполняет следующий код:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
TheTable небольшой, всего 78 строк.
Однако на той же машине, где приложение .NET получает эту ошибку, я могу подключиться к THESERVER с помощью SSMS и User Id/Password, названного в строке подключения.
Почему подключение может быть отключено от приложения ADO.Net, но с использованием идентичных учетных данных из SSMS?