2013-08-27 4 views
1

Когда я выполняю запрос TSQL или хранимую процедуру, которая возвращает большое количество записей (1M +) по умолчанию, он начинает отображать результат во время выполнения запроса.TSQL Предотвращает вывод «FAST N» по умолчанию

Есть ли способ предотвратить это и отложить возврат результата до завершения выполнения запроса?

+1

Зачем вам это нужно? Это можно сохранить в таблице «# temp» или, возможно, переписать запрос, чтобы получить оператор блокировки, но затем он берет память сервера, сохраняя весь набор результатов. –

+0

Я думаю, что это может вызвать проблемы в моем другом вопросе: http://stackoverflow.com/questions/18468284/sqldatareader-does-return-all-records-3rd-attempt (может быть, я ошибаюсь, но кажется, что код .NET читает только «Fast N») –

ответ

1

Если добавить столбец, как следующее возвращенного набора данных, он почти наверняка не будет в состоянии сделать FAST(N):

.., MAX(prevColumn) OVER(PARTITON BY 1) As Dummy, ... 

Где prevColumn любой другой столбец, который вы уже возвращающимся, особенно если это не индексированный столбец.

+0

Это сделало, спасибо. Хотя оказалось, что для моей другой проблемы не было необходимости :), но спасибо в любом случае –

0

Вы можете использовать функцию ORDER BY или Aggregate в SELECT, которая вам поможет.

Смежные вопросы