создать пакетный процесс. Разрешить не более, чем сказать n записей для обработки. Допустим, n = 100 ...
затем сделайте ваши запросы на выборку, чтобы выбрать только первые 100, пока не останется больше записей для обработки.
YourCommandObject.CommandTimeout = 0;
Это позволит вашей команде работать вечно.
Обратите внимание, что это может привести к блокировке базы данных и другим проблемам. Если вы используете пакетный процесс, который я описал выше, и определите самый продолжительный запрос, вы можете установить для тайм-аута соединения то, что необходимо.