Khi cố gắng gọi Close hoặc Dispose trên một SqlDataReader tôi nhận được một thời gian chờ hết hạn ngoại lệ. Nếu bạn có một DbConnection đến SQL Server, bạn có thể tái tạo nó cho mình với:.NET: SqlDataReader.Close hoặc .Dispose results in Timeout Expired exception
String CRLF = "\r\n";
String sql =
"SELECT * " + CRLF +
"FROM (" + CRLF +
" SELECT (a.Number * 256) + b.Number AS Number" + CRLF +
" FROM master..spt_values a," + CRLF +
" master..spt_values b" + CRLF +
" WHERE a.Type = 'p'" + CRLF +
" AND b.Type = 'p') Numbers1" + CRLF +
" FULL OUTER JOIN (" + CRLF +
" SELECT (print("code sample");a.Number * 256) + b.Number AS Number" + CRLF +
" FROM master..spt_values a," + CRLF +
" master..spt_values b" + CRLF +
" WHERE a.Type = 'p'" + CRLF +
" AND b.Type = 'p') Numbers2" + CRLF +
" ON 1=1";
DbCommand cmd = connection.CreateCommand();
cmd.CommandText = sql;
DbDataReader rdr = cmd.ExecuteReader();
rdr.Close();
Nếu bạn gọi reader.Close() hoặc reader.Dispose() nó sẽ ném một System.Data.SqlClient.SqlException:
- ERRORCODE: -2146232060 (0x80131904)
- nhắn: "Thời gian chờ hết hạn Khoảng thời gian chờ trôi qua trước khi hoàn thành các hoạt động hoặc các máy chủ không được đáp ứng.."
vấn đề xảy ra nếu bạn đọc zero hàng, một hàng hoặc nhiều hàng. –