Partilhar via


Configuração do servidor: parâmetros de requisição RPC máx (KB)

Aplica-se a:SQL ServerAzure SQL Managed Instance

A max RPC request params (KB) opção de configuração do servidor limita a quantidade de memória usada pelos parâmetros de chamada de procedimento remoto (RPC) 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 associado de parâmetros.

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, gravidade 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

Esta opção de configuração está disponível nas seguintes plataformas e versões 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)
  • Azure SQL Managed Instance

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 como o tipo de funcionário de memória, e usando sys.dm_os_memory_objects, com MEMOBJ_PROCESSRPC como 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 atenuações:

  • Modifique a max RPC request params (KB) configuração do 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 executadas 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 de falta de memória (erro 701, estado 21) enquanto as chamadas RPC são executadas. O objetivo é manter o consumo de memória sob controle, minimizando a ocorrência de erros de falta de memória.
  • Divida grandes chamadas RPC em lotes menores. Por exemplo, em vez de usar 100.000 INSERT instruçõ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 do cliente, como SqlBulkCopy para SqlClient em .NET ou SQLServerBulkCopy para JDBC em Java. Para obter mais informações, consulte Importação e exportação em massa de dados (SQL Server).

Exemplos

Um. Definir o limite máximo para a memória do parâmetro de chamada RPC

O exemplo a seguir define a memória máxima de 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. Monitore a memória total e máxima de parâmetros RPC atual.

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';