Получение значения ROWCOUNT (не @@ ROWCOUNT) в SQL - PullRequest
4 голосов
/ 21 декабря 2010

Есть ли способ узнать, на что настроен ROWCOUNT?

Компонент, который используется для вызова моей хранимой процедуры, имеет возможность ограничить количество возвращаемых строк, но он, очевидно, делает это, устанавливая ROWCOUNT. Одна хранимая процедура возвращает только одну агрегированную строку, но промежуточные запросы иногда возвращают больше лимита и усекаются. Функция, которая делает все это, является общей и используется для вызова других хранимых процедур; некоторые другие мои процедуры могут нуждаться в ограничении.

Прямо сейчас я устанавливаю ROWCOUNT на очень большое число в верхней части моей хранимой процедуры, а затем возвращаю его к (жестко запрограммированному) обычному пределу, прежде чем вернуть свой результат. Я не поддерживаю компонент, который вызывает мои хранимые процедуры, поэтому я не могу знать, изменился ли предел возвращаемой строки. То, что я хотел бы сделать, это установить локальную переменную в текущее значение ROWCOUNT, а затем установить ее обратно в конце. Есть ли какой-нибудь способ на самом деле увидеть, какой ROWCOUNT установлен?

Ответы [ 2 ]

3 голосов
/ 21 декабря 2010

Если вы запросите dmv sys.dm_exec_sessions, он вернет количество строк, возвращаемых в сеансе до этого момента (конечно, должно быть равно @@ rowcount).

SELECT row_count FROM sys.dm_exec_sessions
WHERE session_id = @@spid

Возможно, вы сможете поиграть с этим, чтобы посмотреть, сможете ли вы его использовать

Сейчас я устанавливаю ROWCOUNT в очень большое число в верхней части моей хранимой процедуры

Вы также можете просто сделать SET ROWCOUNT 0, в этом случае он вернет все строки

2 голосов
/ 21 декабря 2010

Прекратить использование SET ROWCOUNT . Это все равно частично устарело.

Используйте TOP, который существует с SQL Server 2000: 11 лет. Это для каждого запроса и не влияет на промежуточные строки, что означает, что вы можете применять его при необходимости, а не глобально, как сейчас.

Редактировать, февраль 2012

Он удаляется в следующем выпуске после SQL Server 2012 тоже для вставки, обновления и удаления

...