Aplikacja ADO.Net tylko czasami jest w stanie połączyć się z innym serwerem w sieci lokalnej. Wydaje się losowe, czy dana próba połączenia się powiedzie, czy nie. Połączenie używa ciągu połączenia w postaci:
Server = THESERVER \ TheInstance; Database = TheDatabase; ID użytkownika = TheUser; Hasło = ThePassword;
zwrócony błąd to:
Upłynął limit czasu połączenia. Limit czasu upłynął podczas próby wykorzystania potwierdzenia uzgadniania przed logowaniem.
Może to być spowodowane niepowodzeniem uzgadniania przed logowaniem lub brakiem możliwości odpowiedzi serwera na czas.
Czas spędzony podczas próby połączenia się z tym serwerem wyniósł - inicjalizacja [przed logowaniem] = 42030; handshake = 0;
Aplikacja .NET to mała aplikacja testowa, która wykonuje następujący kod:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
Stół jest mały, ma tylko 78 rzędów.
Jednak na tym samym komputerze, na którym aplikacja .NET odbiera ten błąd, mogę połączyć się z serwerem THESERVER za pomocą programu SSMS i identyfikatora użytkownika / hasła podanego w parametrach połączenia.
Dlaczego połączenie może się nie powieść z aplikacji ADO.Net, ale może się powieść z identycznymi poświadczeniami z SSMS?