Příznaky
Zvažte následující scénář:
-
Máte uloženou proceduru obsahující podřízený uloženou proceduru v Microsoft SQL serveru 2012.
-
Podřízená uložená procedura používá jako parametr tabulku.
-
Vytvoříte dočasnou tabulku a pak ji předáte podřízené uložené proceduře jako parametr.
-
Podřízená uložená procedura spouští některé dotazy na dočasné tabulky pomocí kurzorů.
V tomto scénáři dojde k nevracení paměti, které snižuje výkon systému SQL Server 2012.
Řešení
Informace o kumulativní aktualizaci
Kumulativní aktualizace 3 pro SQL Server 2012 Service Pack 1 (SP1)
Oprava pro tento problém byla poprvé vydána v kumulativní aktualizaci 3. Další informace o tom, jak získat tento kumulativní balíček aktualizací pro SQL Server 2012 s aktualizací SP 1, najdete v následujícím článku znalostní báze Microsoft Knowledge Base:
2812412 Kumulativní balíček aktualizací 3 pro SQL Server 2012 Service Pack 1Poznámka Vzhledem k tomu, že buildy jsou kumulativní, každá nová oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí verze systému SQL Server 2012 SP 1 Fix. Doporučujeme zvážit použití nejnovější opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:
2772858 Buildy SQL Server 2012, které byly vydány po vydání SQL Server 2012 Service Pack 1
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.
Další informace
Následující tabulka obsahuje další informace o produktech a nástrojích, které automaticky kontrolují podmínky popsané v části Příznaky v instanci systému SQL Server a ve verzích SQL serveru, se kterými se pravidlo vyhodnocuje:
Software pro pravidlo |
Název pravidla |
Popis pravidla |
Verze produktů, se kterými se vyhodnocuje pravidlo |
---|---|---|---|
Nástroj System Center Advisor |
Nevracení paměti SQL serveru při spuštění dotazů u dočasné tabulky ve vnořené uložené proceduře v systému SQL Server 2012 |
V tomto informačním zpravodaji SQL serveru se zjistilo, že stav buildu SQL serveru je nižší než pevné sestavení kvůli nevracení paměti. K tomu může dojít, pokud máte uloženou proceduru obsahující podřízený objekt, který používá dočasné tabulky, které dále používají kurzory. Můžete si všimnout MEMORYCLERK_SQLOPTIMIZER sys.dm_os_memory_clerks a MEMOBJ_EXECCOMPILETEMP ze sys.dm_os_memory_objects velmi vysoké. Další informace najdete v článku znalostní báze. |
SQL Server 2012 |