Nếu bạn ar thi người đọc trong vòng một, nơi mà nó thực hiện nhiều lần, thì chắc chắn rằng bạn đang sử dụng CommandBehavior.CloseConnection
SqlCommand cmd = new SqlCommand();
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Nếu bạn không, mỗi lần vòng lặp xử lý dòng, khi nó kết thúc và rdr và đối tượng kết nối rơi ra khỏi phạm vi, đối tượng kết nối sẽ không được đóng một cách rõ ràng, vì vậy nó sẽ chỉ đóng và phát hành trở lại hồ bơi khi Garbage Collector cuối cùng được xung quanh để hoàn thành nó ...
Sau đó, nếu vòng lặp của bạn đủ nhanh, (rất có thể), bạn sẽ hết kết nối. (Hồ bơi có giới hạn tối đa mà nó có thể tạo ra)
Điều này sẽ gây thêm độ trễ và sự chậm trễ khi mã tiếp tục tạo thêm kết nối không cần thiết, (tối đa tối đa) và chờ GC bắt kịp với vòng lặp đang sử dụng chúng ...
Nguồn
2009-03-19 17:13:40
Bạn có thể đăng một số mã không? –
Trình lược tả truy vấn Sql có tiết lộ bất kỳ gợi ý nào về vấn đề này không? –
EJB: mã không phải là để đăng. Vấn đề là giống nhau ngay cả khi chúng ta sử dụng lệnh đọc Execute reader (avaiable trong MS help) – Maciej