Como a busca de dados do SQL Server para o SqlDataReader funciona?

Quando chamo este código:

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
        }
    }
}

O que acontece internamente? Como isso funciona no nível da rede? Ele fará uma nova ida e volta ao banco de dados para cada chamada paraRead ou existe algum lote lido implementado internamente?

Estou perguntando, porque acabei de ler que o ODP.NET forneceFetchSize propriedade em ambosOracleCommand eOracleDataReader, que entendo como definição de quantos registros devem ser pré-carregados por ida e volta ao banco de dados. Gostaria de saber se o SQL Server funciona de maneira semelhante e se existe algum comportamento semelhante que pode ser configurado em algum lugar. Não encontrei essa configuração emSqlCommand, SqlDataReader ouCommandBehavior.

questionAnswers(2)

yourAnswerToTheQuestion