Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применимо к:SQL Server
Управляемому экземпляру SQL Azure
Параметр max RPC request params (KB)
конфигурации сервера ограничивает объем памяти, используемой параметрами удаленного вызова процедур (RPC) для одного пакетного вызова RPC. Пакетный вызов RPC содержит одну или несколько инструкций, которые отправляются серверу в виде одного пакета со связанным набором параметров.
По умолчанию память сервера, используемая для параметров пакетных вызовов RPC, не ограничена. Если общий объем памяти, потребляемой параметрами RPC, слишком велик, текущий процесс сервера может быть завершен из-за нехватки памяти.
max RPC request params (KB)
Если для конфигурации задано значение, отличное от нуля, память, используемая одним пакетным вызовом RPC, ограничена указанным значением. Если вызов RPC превышает предел памяти, он завершается ошибкой 701, серьезностью 17, состоянием 21, сообщением: There is insufficient system memory in resource pool 'resource-pool-name' to run this query.
завершение вызова RPC освобождает память, потребляемую параметрами RPC, и избегает риска завершения процесса сервера. Дополнительные сведения см. в MSSQLSERVER_701.
Доступность
Этот параметр конфигурации доступен на следующих платформах и версиях SQL:
- SQL Server 2019 (15.x) CU 26 и более поздних версий
- SQL Server 2022 (16.x) CU 13 и более поздних версий
- Предварительная версия SQL Server 2025 (17.x)
- Управляемый экземпляр SQL Azure
Замечания
Вы можете отслеживать общее потребление памяти сервера параметрами RPC с помощью sys.dm_os_memory_clerks с USERSTORE_SXC
типом клерка памяти и с помощью sys.dm_os_memory_objects с MEMOBJ_PROCESSRPC
типом объекта памяти.
Если вы видите, что USERSTORE_SXC
клирк памяти или MEMOBJ_PROCESSRPC
объекты памяти используют непропорционально большие объемы памяти, рассмотрите следующие меры по снижению.
- Измените
max RPC request params (KB)
конфигурацию сервера, чтобы ограничить объем памяти, потребляемой одним пакетным вызовом RPC. Оптимальное значение зависит от размера данных параметра, используемых в вызовах RPC, и количества вызовов RPC, выполняемых одновременно. Сначала задайте большее значение, а затем запустите уменьшение значения при мониторинге потребления памяти и возникновении ошибок вне памяти (ошибка 701, состояние 21) во время выполнения вызовов RPC. Цель заключается в том, чтобы контролировать потребление памяти при минимизации возникновения ошибок вне памяти. - Разделение больших вызовов RPC на небольшие пакеты. Например, вместо того чтобы использовать 100 000
INSERT
операторов в одном вызове RPC, выполните 10 вызовов RPC, каждый с 10 000 операторами. - Избегайте использования вызовов RPC для массовой вставки данных. Вместо этого используйте методы массового копирования драйвера клиента, например SqlBulkCopy для SqlClient в .NET или SQLServerBulkCopy для JDBC на Java. Дополнительные сведения см. в разделе массового импорта и экспорта данных (SQL Server).
Примеры
А. Установка максимальной памяти параметра вызова RPC
В следующем примере устанавливается максимальная память параметра RPC на один вызов RPC, равная 1 МБ.
EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXECUTE sp_configure 'max RPC request params (KB)', 1024;
RECONFIGURE;
GO
В. Мониторинг текущей общей и максимальной памяти параметров RPC
В следующих примерах отслеживается текущая общая сумма и максимальный объем памяти, потребляемой параметрами RPC:
SELECT SUM(pages_kb) / 1024. AS userstore_sxc_memory_mb
FROM sys.dm_os_memory_clerks
WHERE type = 'USERSTORE_SXC';
SELECT SUM(pages_in_bytes) / 1024. / 1024 AS total_processrpc_memory_mb,
MAX(max_pages_in_bytes) / 1024. / 1024 AS max_processrpc_memory_mb
FROM sys.dm_os_memory_objects
WHERE type = 'MEMOBJ_PROCESSRPC';