Udostępnij za pomocą


Konfiguracja serwera: maksymalna liczba parametrów żądań RPC (KB)

Dotyczy:SQL ServerAzure SQL Managed Instance

Opcja max RPC request params (KB) konfiguracji serwera ogranicza ilość pamięci używanej przez parametry zdalnego wywołania procedury (RPC) dla pojedynczego wywołania RPC wsadowego. Zbiorcze wywołanie RPC zawiera jedną lub więcej instrukcji przesłanych do serwera w ramach pojedynczej grupy ze skojarzonym zestawem parametrów.

Domyślnie pamięć serwera używana dla parametrów wsadowych wywołań RPC jest nieograniczona. Jeśli łączna ilość pamięci zużywanej przez parametry RPC jest zbyt duża, bieżący proces serwera może zostać zakończony z powodu niewystarczającej ilości pamięci.

max RPC request params (KB) Gdy konfiguracja jest ustawiona na wartość niezerową, pamięć używana przez pojedyncze wywołanie RPC wsadowe jest ograniczona do określonej wartości. Jeśli wywołanie RPC przekroczy limit pamięci, zostanie zakończone z błędem 701, ważność 17, stan 21, komunikat: There is insufficient system memory in resource pool 'resource-pool-name' to run this query. Zakończenie wywołania RPC zwalnia pamięć zużywaną przez parametry RPC i unika ryzyka zakończenia procesu serwera. Aby uzyskać więcej informacji, zobacz MSSQLSERVER_701.

Dostępność

Ta opcja konfiguracji jest dostępna na następujących platformach i wersjach SQL:

  • SQL Server 2019 (15.x) CU 26 i nowsze wersje
  • SQL Server 2022 (16.x) CU 13 i nowsze wersje
  • SQL Server 2025 (17.x)
  • Azure SQL Managed Instance

Uwagi

Łączne użycie pamięci serwera można monitorować przy użyciu parametrów RPC przy użyciu sys.dm_os_memory_clerks jako USERSTORE_SXC typu urzędnika pamięci i używania sys.dm_os_memory_objectsMEMOBJ_PROCESSRPC jako typu obiektu pamięci.

Jeśli zauważysz, że USERSTORE_SXC urzędnik pamięci lub MEMOBJ_PROCESSRPC obiekty pamięci zużywają nieproporcjonalnie duże ilości pamięci, rozważ następujące środki zaradcze:

  • Zmodyfikuj konfigurację serwera max RPC request params (KB) tak, aby ograniczyć ilość pamięci zużywanej przez pojedyncze wywołanie RPC w partii. Optymalna wartość zależy od rozmiaru danych parametrów używanych w wywołaniach RPC i liczby wywołań RPC wykonywanych współbieżnie. Najpierw ustaw większą wartość, a następnie rozpocznij zmniejszanie wartości podczas monitorowania zużycia pamięci i wystąpienia błędów braku pamięci (błąd 701, stan 21), podczas gdy wywołania RPC są wykonywane. Celem jest utrzymanie zużycia pamięci pod kontrolą, minimalizując jednocześnie występowanie błędów braku pamięci.
  • Podziel duże wywołania RPC na mniejsze partie. Na przykład zamiast używać 100 000 INSERT instrukcji w jednym wywołaniu RPC, można wykonać 10 wywołań RPC z 10 000 instrukcji w każdym.
  • Unikaj używania wywołań RPC w celu zbiorczego wstawiania danych. Zamiast tego użyj metod kopiowania zbiorczego sterownika klienta, takich jak SqlBulkCopy for SqlClient na platformie .NET lub SQLServerBulkCopy dla sterownika JDBC w języku Java. Aby uzyskać więcej informacji, zobacz Importowanie i eksportowanie zbiorcze danych (SQL Server).

Przykłady

Odp. Ustawianie maksymalnej pamięci parametrów wywołania RPC

W poniższym przykładzie ustawiono maksymalną pamięć parametrów RPC zużywaną przez pojedyncze wywołanie RPC do 1 MB.

EXECUTE sp_configure 'show advanced options', 1;

RECONFIGURE;
GO

EXECUTE sp_configure 'max RPC request params (KB)', 1024;

RECONFIGURE;
GO

B. Monitorowanie bieżącej sumy i maksymalnej pamięci parametrów RPC

Poniższe przykłady monitorują bieżącą sumę i maksymalną ilość pamięci używanej przez parametry 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';