Cuando llamo a este código:¿Cómo funciona la recuperación de datos de SQL Server a SqlDataReader?
using (var connection = new SqlConnection(connectionString))
{
var command = new SqlCommand("SELECT * FROM Table", connection);
connection.Open();
using (var reader = command.ExecuteReader())
{
while(reader.Read())
{
// Do something here
}
}
}
lo que sucede internamente? ¿Cómo funciona esto a nivel de red? ¿Realizará un nuevo viaje de ida y vuelta a la base de datos para cada llamada al Read
o hay alguna lectura por lotes implementada internamente?
Lo digo porque acabo de leer que ofrece ODP.NET FetchSize
característica en tanto OracleCommand
y OracleDataReader
que entiendo como la definición de la cantidad de registros debe ser precargado por viaje sola vuelta a la base de datos. Me pregunto si SQL Server funciona de manera similar y si existe algún comportamiento similar que se pueda configurar en algún lugar. No encontré ninguna configuración de este tipo en SqlCommand
, SqlDataReader
o CommandBehavior
.
Hice [** esta prueba **] (http://i.imgur.com/K6IogT2.png), pero si configuro packetsize en el valor más pequeño (¿negativo?) - ¿me mostraría 1,7? 7,7,7, en lugar de 1,2,3,4,5,6? –