Настройка порогового значения курсора (параметр конфигурации сервера)

Применимо к:SQL Server

В этом разделе описывается настройка параметра конфигурации сервера cursor threshold в SQL Server с помощью SQL Server Management Studio или Transact-SQL. Параметр cursor threshold используется для указания количества строк в наборе курсора, при котором наборы ключей курсора создаются асинхронно. Когда курсоры формируют набор ключей для результирующего набора, оптимизатор запросов прогнозирует количество строк, которые будут возвращены для этого результирующего набора. Если оптимизатор запросов определяет, что число возвращенных строк превышает указанное пороговое значение, курсор формируется асинхронно, позволяя пользователю извлекать из него строки при продолжающемся процессе его заполнения. В противном случае курсор формируется синхронно, и запрос ожидает, пока не будут возвращены все строки.

В этом разделе

Перед началом

Ограничения

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

  • Точность определения приблизительного количества строк в наборе ключей зависит от валюты, используемой в статистике по каждой таблице курсора с помощью оптимизатора запросов.

Рекомендации

  • Это расширенный параметр, и изменять его следует только опытным администраторам баз данных или сертифицированным по SQL Server специалистам.

  • Если значение параметра cursor threshold установить равным -1, все наборы ключей будут создаваться синхронно, что предпочтительно для небольших наборов курсоров. Если значение параметра cursor threshold установить равным 0, все наборы ключей будут создаваться асинхронно. При других значениях оптимизатор запросов сравнивает количество предполагаемых строк в наборе курсора и формирует набор ключей асинхронно, если значение превышает число, заданное параметром cursor threshold. Не следует присваивать параметру cursor threshold слишком низкое значение, поскольку небольшие результирующие наборы предпочтительно формировать в синхронном режиме.

Безопасность

Разрешения

Разрешения на выполнение хранимой процедуры sp_configure без параметров или только с первым параметром по умолчанию предоставляются всем пользователям. Для выполнения процедуры sp_configure с обоими параметрами для изменения параметра конфигурации или запуска инструкции RECONFIGURE необходимо иметь разрешение ALTER SETTINGS на уровне сервера. Разрешение ALTER SETTINGS неявным образом предоставлено предопределенным ролям сервера sysadmin и serveradmin .

Использование среды SQL Server Management Studio

Настройка параметра cursor threshold

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.

  2. Щелкните узел Дополнительно .

  3. В области Разноеустановите для параметра Порог курсора необходимое значение.

Использование Transact-SQL

Настройка параметра cursor threshold

  1. Установите соединение с компонентом Компонент Database Engine.

  2. На панели «Стандартная» нажмите Создать запрос.

  3. Скопируйте следующий пример в окно запроса и нажмите кнопку Выполнить. В этом примере описывается использование хранимой процедуры sp_configure для задания значения параметра cursor threshold равным 0 , при котором наборы ключей курсора формируются асинхронно.

USE AdventureWorks2022;  
GO  
EXEC sp_configure 'show advanced options', 1 ;  
GO  
RECONFIGURE  
GO  
EXEC sp_configure 'cursor threshold', 0 ;  
GO  
RECONFIGURE  
GO  
  

Дополнительные сведения см. в разделе Параметры конфигурации сервера (SQL Server).

Продолжение: после настройки параметра cursor threshold

Параметр вступает в силу немедленно, без перезапуска сервера.

См. также:

@@CURSOR_ROWS (Transact-SQL)
RECONFIGURE (Transact-SQL)
Параметры конфигурации сервера (SQL Server)
sp_configure (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)