SQL Server предоставляет набор результатов, который доставляется в виде потока сетевых пакетов (при условии, что вы используете TCP / IP для подключения к серверу).
Так что, если вы хотите быть действительно хардкорным, вы можете реализовать проводной протокол для доступа к SQL Server через сеть, а затем работать с потоком TCP. Однако это будет серьезная работа, которая не рекомендуется.
Другой возможностью было бы сделать запрос не один раз, а использовать несколько запросов, каждый из которых получает определенное «окно» вашего набора результатов. Это называется «подкачкой на стороне сервера». См. эту статью для описания того, как это делается.
Другим методом будет использование потокового доступа на стороне клиента. Например, если вы используете ADO.NET в качестве клиента, вы можете использовать SqlDataReader, чтобы получать по одной строке за раз (в фоновом режиме данные по-прежнему доставляются кусками по сети, но это прозрачно для вас). Но это зависит от клиента, которого вы используете, который вы не указали.