Sp configure: примеры (SQL)

Работа с функцией sp_configure в MS SQL: примеры применения
Раздел: Функции настройки и конфигурации, Конфигурация
sp_configure([@configname =] 'name' [, [@configvalue =] 'value']): int

Функция sp_configure в MS SQL Server

Хранимая процедура sp_configure предназначена для просмотра и изменения глобальных конфигурационных параметров сервера MS SQL Server. Она применяется для управления настройками уровня сервера, такими как параметры памяти, безопасности, параллелизма и другие.

Процедура используется администраторами баз данных для тонкой настройки производительности и поведения SQL Server. Для применения некоторых изменений может потребоваться перезапуск экземпляра сервера.

Аргументы

  • @configname (nvarchar(35), опционально): Имя настраиваемого параметра. Если не указано, возвращает список всех доступных параметров.
  • @configvalue (int, опционально): Новое значение для указанного параметра. Требует последующего выполнения команды RECONFIGURE или RECONFIGURE WITH OVERRIDE для применения.

Возвращаемые значения

По умолчанию возвращает результирующий набор со столбцами: name (имя параметра), minimum (мин. значение), maximum (макс. значение), config_value (значение в конфигурации), run_value (текущее действующее значение). В случае успешного выполнения возвращает код 0. При ошибке возвращает 1.

Примеры использования sp_configure

Просмотр всех доступных параметров конфигурации.

EXEC sp_configure;
name                          minimum maximum config_value run_value
------------------------------ ------- ------- ------------ ---------
access check cache bucket      0       16384   0            0
access check cache quota       0       2147483 0            0
... (много строк)

Просмотр конкретного параметра, например, 'max server memory'.

EXEC sp_configure 'max server memory';
name             minimum maximum config_value run_value
---------------- ------- ------- ------------ ---------
max server memory 16     2147483 2147483      2147483

Изменение значения параметра 'clr enabled' с 0 на 1.

EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
Конфигурация параметра 'clr enabled' изменена с 0 на 1. Для установки параметра запустите инструкцию RECONFIGURE.

Похожие средства в MS SQL

Представление sys.configurations: Предоставляет информацию о всех параметрах сервера в виде набора строк, что удобно для запросов и соединений. Не позволяет изменять значения.

Команда RECONFIGURE: Применяет измененные значения, установленные через sp_configure. RECONFIGURE WITH OVERRIDE применяет настройки, даже если они не проходят проверку на допустимость.

Хранимая процедура sp_configure является основным инструментом для изменения глобальных настроек. Представление sys.configurations предпочтительнее для программного чтения и мониторинга. Для изменения параметров уровня базы данных используются команды ALTER DATABASE.

Аналоги в других системах

MySQL: Для просмотра переменных используется SHOW VARIABLES или запрос к INFORMATION_SCHEMA.GLOBAL_VARIABLES. Изменение - SET GLOBAL или SET PERSIST.

SHOW GLOBAL VARIABLES LIKE 'max_connections';
SET GLOBAL max_connections = 200;
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 151   |
+-----------------+-------+

Oracle: Параметры управляются через представления V$PARAMETER и V$SYSTEM_PARAMETER. Изменение - ALTER SYSTEM.

SELECT name, value FROM v$parameter WHERE name = 'processes';
ALTER SYSTEM SET processes = 300 SCOPE=SPFILE;

PostgreSQL: Используются команды SHOW и SET, а также просмотр pg_settings. Большинство изменений требует перезагрузки.

SHOW shared_buffers;
SET shared_buffers = '256MB'; -- только для сессии

SQLite: Используются прагмы для настройки параметров базы данных.

PRAGMA journal_mode = WAL;

В отличие от MS SQL, где sp_configure централизованно управляет параметрами сервера, в других системах часто используется комбинация команд и представлений.

Распространенные ошибки

Ошибка при попытке установить значение, выходящее за допустимые пределы.

EXEC sp_configure 'max server memory', 10;
Msg 15123, Level 16, State 1, Procedure sp_configure, Line 62
Значение параметра конфигурации "max server memory" (10) должно находиться в диапазоне от 16 до 2147483.

Попытка изменить расширенный параметр без предварительного включения настройки 'show advanced options'.

EXEC sp_configure 'cost threshold for parallelism', 30;
Msg 15123, Level 16, State 1, Procedure sp_configure, Line 62
Параметр конфигурации 'cost threshold for parallelism' не существует или является расширенным.

Отсутствие разрешений ALTER SETTINGS на уровне сервера.

EXEC sp_configure 'max server memory', 1024;
Msg 5808, Level 16, State 1, Procedure sp_configure, Line 62
Для изменения этого параметра требуются разрешения ALTER SETTINGS.

Изменения в последних версиях

В SQL Server 2019 появились новые параметры, такие как 'tempdb metadata memory-optimized', для перемещения метаданных tempdb в оптимизированные для памяти структуры. Также были добавлены параметры, связанные с интеллектуальной обработкой запросов, например, 'scoped configuration' для вторичных реплик в группах доступности.

Поведение процедуры sp configure в целом остается стабильным, но список доступных параметров постоянно расширяется с каждым крупным обновлением SQL Server, отражая новые функциональные возможности ядра СУБД.

Расширенные примеры настройки

Включение расширенных параметров и последующее изменение нескольких настроек производительности.

Пример sql
-- Показ расширенных опций
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- Установка порога для параллелизма и максимальной степени параллелизма
EXEC sp_configure 'cost threshold for parallelism', 35;
EXEC sp_configure 'max degree of parallelism', 4;
RECONFIGURE;
Конфигурация параметра 'show advanced options' изменена с 0 на 1.
...

Использование RECONFIGURE WITH OVERRIDE для параметра 'user options', который требует принудительного применения.

Пример sql
EXEC sp_configure 'user options', 256;
RECONFIGURE WITH OVERRIDE;

Динамическое создание скрипта для сброса всех параметров к значениям по умолчанию, кроме нескольких ключевых.

Пример sql
DECLARE @sql NVARCHAR(MAX) = '';
SELECT @sql += 'EXEC sp_configure ''' + name + ''', ' + CAST(config_value AS NVARCHAR) + '; RECONFIGURE;'
FROM sys.configurations 
WHERE is_dynamic = 1 AND name NOT IN ('max server memory', 'min server memory');

EXEC sp_executesql @sql;

Настройка параметров аварийного завершения запросов (query wait и query governor cost limit).

Пример sql
EXEC sp_configure 'query wait', -1; -- Неограниченное ожидание
EXEC sp_configure 'query governor cost limit', 120; -- Ограничение в 120 секунд
RECONFIGURE;

Эти примеры демонстрируют возможность комплексной настройки среды SQL Server для оптимизации под конкретную рабочую нагрузку.

MS SQL sp_configure function comments

En
Sp configure Displays or changes global configuration settings for the current server