Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
A max RPC request params (KB) opção de configuração do servidor limita a quantidade de memória usada pelos parâmetros de RPC (chamada de procedimento remoto) para uma única chamada RPC em lote. Uma chamada RPC em lote contém uma ou mais instruções que são enviadas ao servidor como um único lote com seu conjunto de parâmetros associado.
Por padrão, a memória do servidor usada para os parâmetros de chamadas RPC em lote é ilimitada. Quando a memória total consumida pelos parâmetros RPC é excessivamente grande, o processo do servidor atual pode ser encerrado devido à memória insuficiente.
Quando a max RPC request params (KB) configuração é definida como um valor diferente de zero, a memória usada por uma única chamada RPC em lote é limitada ao valor especificado. Se a chamada RPC exceder o limite de memória, ela será encerrada com o erro 701, severidade 17, estado 21, mensagem: There is insufficient system memory in resource pool 'resource-pool-name' to run this query. Encerrar a chamada RPC libera a memória consumida pelos parâmetros RPC e evita o risco de encerramento do processo do servidor. Para obter mais informações, consulte MSSQLSERVER_701.
Disponibilidade
Essa opção de configuração está disponível nas seguintes plataformas e versões do SQL:
- SQL Server 2019 (15.x) CU 26 e versões posteriores
- SQL Server 2022 (16.x) CU 13 e versões posteriores
- SQL Server 2025 (17.x)
- Instância Gerenciada de SQL do Azure
Observações
Você pode monitorar o consumo total de memória do servidor por parâmetros RPC usando sys.dm_os_memory_clerks, com USERSTORE_SXC o tipo de funcionário de memória e usando sys.dm_os_memory_objects, com MEMOBJ_PROCESSRPC o tipo de objeto de memória.
Se você observar que o USERSTORE_SXC funcionário de memória ou os MEMOBJ_PROCESSRPC objetos de memória consomem quantidades desproporcionalmente grandes de memória, considere as seguintes mitigações:
- Modifique a configuração do
max RPC request params (KB)servidor para limitar a quantidade de memória consumida por uma única chamada RPC em lote. O valor ideal depende do tamanho dos dados de parâmetro usados em chamadas RPC e do número de chamadas RPC em execução simultaneamente. Defina um valor maior inicialmente e, em seguida, comece a reduzir o valor enquanto monitora o consumo de memória e a ocorrência de erros fora de memória (erro 701, estado 21) enquanto as chamadas RPC são executadas. A meta é manter o consumo de memória sob controle, minimizando a ocorrência de erros fora de memória. - Divida chamadas RPC grandes em lotes menores. Por exemplo, em vez de usar 100.000
INSERTinstruções em uma única chamada RPC, emita 10 chamadas RPC com 10.000 instruções em cada chamada. - Evite usar chamadas RPC para inserir dados em massa. Em vez disso, use os métodos de cópia em massa do driver cliente, como SqlBulkCopy para SqlClient no .NET ou SQLServerBulkCopy para JDBC em Java. Para obter mais informações, consulte Importação e Exportação de Dados em Massa (SQL Server).
Exemplos
Um. Definir a memória máxima do parâmetro de chamada RPC
O exemplo a seguir define a memória máxima do parâmetro RPC que uma única chamada RPC pode consumir para 1 MB.
EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXECUTE sp_configure 'max RPC request params (KB)', 1024;
RECONFIGURE;
GO
B. Monitorar o total atual e a memória máxima do parâmetro RPC
Os exemplos a seguir monitoram o total atual e a memória máxima consumida pelos parâmetros 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';