Tôi có dịch vụ web đang hoạt động tốt mà không sửa đổi trong vài năm nay. Đột nhiên ngày hôm nay nó quyết định rằng nó sẽ không hoạt động, và ném một thời gian chờ SQL:Gỡ rối hết thời gian chờ của Máy chủ SQL
System.Data.SqlClient.SqlException: Timeout hết hạn. Khoảng thời gian chờ trôi qua trước khi hoàn thành thao tác hoặc máy chủ không phản hồi.
Điều thú vị cần lưu ý là dịch vụ web này sống trên cùng một máy chủ với cơ sở dữ liệu và cũng có thể nếu tôi lấy truy vấn ra khỏi một dấu vết SQL và chạy nó trong phòng quản lý, nó sẽ trả về sau một giây. Nhưng đó là thời gian ra sau chính xác 30 giây khi được gọi từ dịch vụ web mà không thất bại. Tôi đang sử dụng Thư viện Doanh nghiệp để kết nối với cơ sở dữ liệu, vì vậy tôi không thể tưởng tượng rằng bắt đầu thất bại một cách ngẫu nhiên.
Tôi không hoàn toàn chắc chắn điều gì đột nhiên có thể khiến nó ngừng hoạt động. Tôi đã tái chế hồ bơi ứng dụng, và thậm chí khởi động lại quá trình SQL mà tôi thấy nó đang sử dụng. Hành vi tương tự. Bất kỳ cách nào tôi có thể khắc phục sự cố này?
CẬP NHẬT: Mitch đóng đinh. Ngay sau khi tôi thêm "WITH RECOMPILE" trước từ khóa "AS" trong định nghĩa sproc, nó đã trở lại với cuộc sống. Bravo!
@Chris: Xin lưu ý rằng bạn không nên thêm WITH RECOMPILE trừ khi nó là một điều mương cuối cùng. Sử dụng RECOMPILE FOR được nhắm mục tiêu nhiều hơn –