Как SSMS показывает частичные результаты большого набора результатов, пока запрос еще выполняется, и может ли быть достигнуто эквивалентное поведение в.NET?
В SQL Server Management Studio при выполнении запроса, который выдает очень большой набор результатов, он иногда отображает результаты набора результатов по мере их загрузки, а не все они появляются сразу.
Мое обычное предположение состояло бы в том, что это просто заполнение сетки (ей) в SSMS результатами завершенного запроса, и что сам запрос SQL завершен.
Однако, если я запускаю следующий запрос:
SELECT 1
SELECT * FROM EnormousTable
INSERT INTO SomeOtherTable([Column1]) SELECT 'Test3'
Что в прошлом INSERT
не происходит до тех пор, пока результаты из большего набора результатов не будут полностью возвращены.
У меня есть два основных вопроса:
1. Что здесь происходит? Разбивает ли SSMS запрос на отдельные группы даже без GO
заявления? Обратите внимание, что я не администратор баз данных, поэтому, если для такого поведения есть какая-то фундаментальная причина, которую "знает любой администратор баз данных", есть большая вероятность, что я этого не знаю.
2. Есть ли способ достичь аналогичной функциональности в.NET? Под этим я подразумеваю, что при выполнении набора запросов, которые будут генерировать несколько наборов результатов, возможно ли получить DataSet
заполняться результатами каждого последующего запроса по мере его завершения (не дожидаясь завершения всех запросов), без необходимости вручную разбивать запрос (если только это не то, что SSMS на самом деле делает изнутри).