Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Managed Instance
A max RPC request params (KB) kiszolgálókonfigurációs beállítás korlátozza a távoli eljáráshívás (RPC) paraméterei által egy kötegelt RPC-híváshoz használt memória mennyiségét. A kötegelt RPC-hívások egy vagy több utasítást tartalmaznak, amelyeket a kiszolgáló egyetlen kötegként küld el a hozzá tartozó paraméterekkel együtt.
Alapértelmezés szerint a kötegelt RPC-hívások paramétereihez használt kiszolgálói memória korlátlan. Ha az RPC-paraméterek által felhasznált teljes memória túl nagy, az aktuális kiszolgálói folyamat leállhat a memória elégtelensége miatt.
Ha a max RPC request params (KB) konfiguráció nemzero értékre van állítva, az egyetlen kötegelt RPC-hívás által használt memória a megadott értékre korlátozódik. Ha az RPC-hívás túllépi a memóriakorlátot, a 701-es, 17-es súlyosságú, 21-es állapotú üzenettel végződik: There is insufficient system memory in resource pool 'resource-pool-name' to run this query. Az RPC-hívás leállítása felszabadítja az RPC-paraméterek által felhasznált memóriát, és elkerüli a kiszolgálói folyamat leállításának kockázatát. További információ: MSSQLSERVER_701.
Elérhetőség
Ez a konfigurációs lehetőség az alábbi SQL-platformokon és -verziókban érhető el:
- SQL Server 2019 (15.x) CU 26 és újabb verziók
- SQL Server 2022 (16.x) CU 13 és újabb verziók
- SQL Server 2025 (17.x)
- Azure SQL Managed Instance
Megjegyzések
A kiszolgáló teljes memóriahasználatát RPC-paraméterekkel figyelheti úgy, hogy sys.dm_os_memory_clerks használata esetén a memóriajegyző típusát, illetve USERSTORE_SXC használata esetén a memóriaobjektum típusát használja.
Ha azt tapasztalja, hogy a USERSTORE_SXC memóriajegyző vagy a MEMOBJ_PROCESSRPC memóriaobjektum aránytalanul nagy mennyiségű memóriát használ fel, vegye figyelembe a következő kockázatcsökkentéseket:
- Módosítsa a kiszolgáló konfigurációját
max RPC request params (KB), hogy korlátozza az egyetlen köteg RPC-hívás által felhasznált memória mennyiségét. Az optimális érték az RPC-hívásokban használt paraméteradatok méretétől és az egyidejűleg végrehajtó RPC-hívások számától függ. Először állítson be egy nagyobb értéket, majd kezdje el csökkenteni az értéket a memóriahasználat monitorozása közben, valamint a memóriakihasználtsági hibák (701-s hiba, 21-s állapot) előfordulásának figyelése közben, miközben az RPC-hívások futnak. A cél a memóriafogyasztás szabályozása, az 'out-of-memory' hibák előfordulásának minimalizálása. - Ossza fel a nagy RPC-hívásokat kisebb kötegekre. Például ahelyett, hogy 100 000
INSERTutasítást használ egy RPC-hívásban, 10 RPC-hívást kell kiadni 10 000 utasítással minden hívásban. - Ne használjon RPC-hívásokat az adatok tömeges beszúrásához. Ehelyett használja az ügyfélillesztő tömeges másolási módszereit, például az SqlBulkCopyját a .NET-ben, vagy az SQLServerBulkCopyt JDBC-n Java-ban. További információ: Adatok tömeges importálása és exportálása (SQL Server).
Példák
Egy. Az RPC-hívásparaméter maximális memóriájának beállítása
Az alábbi példa egy RPC-hívás maximális RPC-paramétermemóriát állít be 1 MB-ra.
EXECUTE sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXECUTE sp_configure 'max RPC request params (KB)', 1024;
RECONFIGURE;
GO
B. Az aktuális teljes és maximális RPC-paramétermemória monitorozása
Az alábbi példák az RPC-paraméterek által felhasznált aktuális teljes és maximális memóriát figyelik:
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';