Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
azure SQL Managed Instance
Možnost max RPC request params (KB) konfigurace serveru omezuje množství paměti používané parametry vzdáleného volání procedur (RPC) pro jedno dávkové volání RPC. Dávkové volání RPC obsahuje jeden nebo více příkazů odesílaných na server jako jednu dávku s přidruženou sadou parametrů.
Ve výchozím nastavení je paměť serveru používaná pro parametry dávkových volání RPC neomezená. Pokud je celková paměť spotřebovaná parametry RPC příliš velká, může být aktuální proces serveru ukončen kvůli nedostatku paměti.
max RPC request params (KB) Pokud je konfigurace nastavena na nenulovou hodnotu, paměť používaná jedním dávkovým voláním RPC je omezena na zadanou hodnotu. Pokud volání RPC překročí limit paměti, ukončí se s chybou 701, závažností 17, stavem 21, zprávou: There is insufficient system memory in resource pool 'resource-pool-name' to run this query. Ukončení volání RPC uvolní paměť spotřebovanou parametry RPC a zabrání riziku ukončení procesu serveru. Další informace najdete v tématu MSSQLSERVER_701.
Dostupnost
Tato možnost konfigurace je dostupná na následujících platformách a verzích SQL:
- SQL Server 2019 (15.x) CU 26 a novější verze
- SQL Server 2022 (16.x) CU 13 a novější verze
- SQL Server 2025 (17.x)
- Azure SQL Managed Instance
Poznámky
Celkovou spotřebu paměti serveru můžete monitorovat pomocí parametrů RPC pomocí sys.dm_os_memory_clerks, s USERSTORE_SXC typem úředníka paměti a pomocí sys.dm_os_memory_objects jako MEMOBJ_PROCESSRPC typu objektu paměti.
Pokud zjistíte, že USERSTORE_SXC pracovník paměti nebo MEMOBJ_PROCESSRPC paměťové objekty spotřebovávají nepřiměřeně velké množství paměti, zvažte následující omezení rizik:
-
max RPC request params (KB)Upravte konfiguraci serveru tak, aby omezovala množství paměti spotřebované jedním dávkovém voláním RPC. Optimální hodnota závisí na velikosti dat parametrů používaných ve voláníCH RPC a počtu souběžných volání RPC. Nejprve nastavte větší hodnotu a začněte snižovat hodnotu při monitorování spotřeby paměti a výskyt chyb nedostatku paměti (chyba 701, stav 21) při provádění volání RPC. Cílem je zachovat spotřebu paměti pod kontrolou a současně minimalizovat výskyt chyb nedostatku paměti. - Rozdělte velká volání RPC na menší dávky. Například místo použití 100 000
INSERTpříkazů v jednom volání RPC vydáte 10 volání RPC s 10 000 příkazy v každém volání. - Nepoužívejte volání RPC k hromadnému vkládání dat. Místo toho použijte metody hromadného kopírování klientského ovladače, například SqlBulkCopy pro SqlClient v .NET nebo SQLServerBulkCopy pro JDBC v Javě. Další informace naleznete v tématu Hromadný import a export dat (SQL Server).
Příklady
A. Nastavení maximální paměti parametru volání RPC
Následující příklad nastaví maximální paměť parametru RPC, kterou může jedno volání RPC spotřebovat na 1 MB.
EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXECUTE sp_configure 'max RPC request params (KB)', 1024;
RECONFIGURE;
GO
B. Monitorování aktuální celkové a maximální paměti parametrů RPC
Následující příklady monitorují aktuální celkový součet a maximální paměť spotřebovanou 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';
Související obsah
- možnosti konfigurace serveru
- Blog: Zabalené/dávkové volání RPC (TSQL) Transact-SQL