Aplikasi ADO.Net terkadang hanya dapat terhubung ke server lain di jaringan lokal. Tampaknya acak apakah upaya koneksi tertentu berhasil atau gagal. Koneksi menggunakan koneksi string berupa:
Server = THESERVER \ TheInstance; Database = TheDatabase; User Id = TheUser; Kata Sandi = Kata Sandi;
kesalahan yang dikembalikan adalah:
Connection Timeout Expired. Periode waktu tunggu berlalu saat mencoba menggunakan pengakuan jabat tangan pra-login.
Ini bisa jadi karena handshake pra-login gagal atau server tidak dapat merespons tepat waktu.
Durasi yang dihabiskan ketika mencoba untuk terhubung ke server ini adalah - [Pre-Login] inisialisasi = 42030; jabat tangan = 0;
Aplikasi .NET adalah aplikasi uji kecil yang menjalankan kode berikut:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
Tabel kecil, hanya 78 baris.
Namun, pada mesin yang sama di mana aplikasi .NET menerima kesalahan ini, saya dapat menyambung ke THESERVER menggunakan SSMS dan ID Pengguna / Kata Sandi yang disebutkan dalam string sambungan.
Mengapa koneksi gagal dari aplikasi ADO.Net, tetapi berhasil dengan kredensial identik dari SSMS?


