Lorsque j'essaie d'appeler Close ou Dispose sur un SqlDataReader, j'obtiens une exception de délai expiré. Si vous avez un DbConnection à SQL Server, vous pouvez reproduire vous-même avec:.NET: SqlDataReader.Close ou .Dispose génère une exception Timeout expirée
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();
Si vous appelez reader.Close() ou reader.Dispose(), il lancera une System.Data.SqlClient.SqlException:
- ErrorCode: -2146232060 (0x80131904)
- message: « délai d'attente expiré le délai écoulé avant la fin de l'opération ou le serveur ne répond pas. ».
problème se produit si vous lisez zéro lignes, une ligne ou plusieurs lignes. –