Ознаки
Розглянемо такий сценарій:
-
У вас є Збережена процедура, яка містить дитячу збережену процедуру в Microsoft SQL Server 2012.
-
Збережена в дитинстві процедура використовує таблицю як параметр.
-
Ви створюєте тимчасову таблицю, а потім проходите її до дитини, збереженої як параметр.
-
Під час збереження в дитячому списку деякі запити в тимчасовій таблиці виконуються за допомогою курсорів.
У цьому сценарії виникає витік пам'яті, що погіршує продуктивність SQL Server 2012.
Спосіб вирішення
Відомості про Сукупне оновлення
Сукупне оновлення 3 для SQL Server 2012 Service Pack 1 (SP1)
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 3. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2012 SP 1, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2812412 Сукупний пакет оновлень пакета 3 для SQL Server 2012 Service Pack 1Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення системи безпеки, які були включені до попередньої версії SQL Server 2012 SP 1 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2772858 Випущено SQL Server 2012, що випущено після випуску пакета оновлень 1 (SP1) для SQL Server 2012
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".
Додаткові відомості
У таблиці нижче наведено докладні відомості про продукти або засоби, які автоматично перевірятиме умови, описані в розділі "ознаки", у екземплярі SQL Server, а також у версіях SQL Server, з якого обчислюється правило:
Програмне забезпечення для правил |
Назва правила |
Опис правила |
Версії продуктів, на які обчислюється правило |
---|---|---|---|
Порадник з системного центру |
Витік пам'яті SQL Server, коли запити виконуються за допомогою тимчасової таблиці в вкладеній збереженої процедурі в SQL Server 2012 |
У цьому Порадник з екземпляра SQL Server виявив, що присутність сервера SQL Server, що будується нижче, ніж усунена збірка для проблеми витоку пам'яті. Це може статися, якщо у вас є Збережена процедура, яка містить збережену в дитинстві процедуру, яка використовує тимчасові таблиці, які надалі використовує курсори. Ви можете помітити, MEMORYCLERK_SQLOPTIMIZER sys.dm_os_memory_clerks і MEMOBJ_EXECCOMPILETEMP з sys.dm_os_memory_objects буде дуже високою. Щоб отримати докладні відомості, зверніться до статті бази знань. |
SQL Server 2012 |