Symptomy
Rozpatrzmy następujący scenariusz:
-
Masz procedurę przechowywaną zawierającą podrzędną procedurę przechowywaną w programie Microsoft SQL Server 2012.
-
Podrzędna procedura składowana używa tabeli jako parametru.
-
Można utworzyć tabelę tymczasową, a następnie przekazać ją do podrzędnej procedury składowanej jako parametr.
-
Podrzędna procedura składowana uruchamia kwerendy w tabeli tymczasowej za pomocą kursorów.
W tym scenariuszu występuje przeciek pamięci, który pogarsza wydajność programu SQL Server 2012.
Rozwiązanie
Informacje o aktualizacji zbiorczej
Zbiorcza aktualizacja 3 dla programu SQL Server 2012 z dodatkiem Service Pack 1 (SP1)
Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 3. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2012 SP 1, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2812412 Pakiet aktualizacji zbiorczej 3 dla programu SQL Server 2012 z dodatkiem Service Pack 1Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji programu SQL Server 2012 z dodatkiem SP 1. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2772858 Kompilacje programu SQL Server 2012 wydane po opublikowaniu dodatku Service Pack 1 dla programu SQL Server 2012
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".
Więcej informacji
Poniższa tabela zawiera więcej informacji na temat produktów lub narzędzi, które automatycznie sprawdzają warunek opisany w sekcji "Symptomy" w wystąpieniu programu SQL Server i w wersjach programu SQL Server, dla których ta reguła jest szacowana:
Oprogramowanie reguły |
Tytuł reguły |
Opis reguły |
Wersje produktu, dla których jest oceniana reguła |
---|---|---|---|
Klasyfikator centrum systemowego |
Przeciek pamięci programu SQL Server, gdy kwerendy są uruchamiane w tabeli tymczasowej w zagnieżdżonej procedurze składowanej programu SQL Server 2012 |
W tym doradcze wystąpień programu SQL Server wykryto obecność kompilacji programu SQL Server niższą niż stała kompilacja w celu wykrycia problemu z przeciekiem pamięci. Może się tak zdarzyć, gdy masz procedurę przechowywaną zawierającą procedurę przechowywaną w trybie potomnym, która używa tabel tymczasowych, które dodatkowo używają kursorów. Możesz zauważyć, MEMORYCLERK_SQLOPTIMIZER sys.dm_os_memory_clerks i MEMOBJ_EXECCOMPILETEMP od sys.dm_os_memory_objects bardzo wysokie. Aby uzyskać więcej informacji, zobacz artykuł z bazy wiedzy Knowledge Base. |
Program SQL Server 2012 |