SQL Server: максимальное количество записей для возврата - PullRequest
5 голосов
/ 08 июня 2011

У нас есть RowCount, чтобы установить количество записей для возврата или воздействия.Но мы должны установить это каждый раз перед выполнением оператора sql.Я ищу способ установить это после запуска моего приложения, чтобы оно влияло на все запросы, выполняемые через мое приложение.

Обновление

Я хочу достичь стратегии пробной версии с ограниченным количеством записей!Я не хочу связываться с моим реальным кодом и хочу, чтобы база данных как-то ограничивала количество записей, возвращаемых в результате любого запроса!Альтернативой может быть передача параметра каждой хранимой процедуре, но мне действительно не нравится эта и я ищу другую стратегию!

Ответы [ 3 ]

6 голосов
/ 08 июня 2011

Вы можете параметризовать TOP в своем коде для всех команд

DECLARE @rows int
SET @row = ISNULL(@row, 2000000000)
SELECT TOP (@rows) ... FROM ..

Таким образом, вы можете задать TOP для всех ваших запросов глобально, например, упаковав или расширив SQLCommand

SET ROWCOUNT isНе безопасный вариант: он влияет на промежуточные наборы результатов и имеет другое непредсказуемое поведение.И он частично не рекомендуется игнорировать в I / U / D DML: см. MSDN

Использование SET ROWCOUNT не повлияет на операторы DELETE, INSERT и UPDATE в следующей версии SQLСервер

2 голосов
/ 08 июня 2011

Вы не упоминаете язык приложения, который используете, поэтому я не могу дать вам код, но создает функцию-обертку для соединения с базой данных . В этой функции после подключения к базе данных введите SET ROWCOUNT n, задайте n параметр и добавьте любую логику, необходимую для его изменения. Я делаю аналогичное с CONTEXT_INFO, я установил это в своей функции подключения.

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

0 голосов
/ 08 июня 2011

При запуске приложения сбросьте RowCount, выполнив следующую команду:

command.CommandText = "SET ROWCOUNT 0;";

Когда конкретный режим активирован, установите RowCount на нужное значение, выполнив следующую команду:

command.CommandText = "SET ROWCOUNT " + rowCount + ";";

Когда определенный режим деактивирован, снова выполните сброс RowCount.


См. SET ROWCOUNT (Transact-SQL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...