แอปพลิเคชัน ADO.Net สามารถเชื่อมต่อกับเซิร์ฟเวอร์อื่นบนเครือข่ายท้องถิ่นได้ในบางครั้ง ดูเหมือนจะสุ่มว่าความพยายามในการเชื่อมต่อที่กำหนดสำเร็จหรือล้มเหลว การเชื่อมต่อใช้สตริงการเชื่อมต่อในรูปแบบ:
เซิร์ฟเวอร์ = THESERVER \ TheInstance; Database = TheDatabase; User Id = TheUser; รหัสผ่าน = 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 และรหัสผู้ใช้ / รหัสผ่านที่ระบุชื่อในสตริงการเชื่อมต่อ
เหตุใดการเชื่อมต่อจึงล้มเหลวจากแอป ADO.Net แต่ประสบความสำเร็จด้วยข้อมูลรับรองที่เหมือนกันจาก SSMS