Проблемы
Рассмотрим следующий сценарий.
-
У вас есть хранимая процедура, содержащая дочернюю хранимую процедуру в Microsoft SQL Server 2012.
-
Дочерняя хранимая процедура использует таблицу в качестве параметра.
-
Вы создаете временную таблицу, а затем передаете ее дочерней хранимой процедуре в качестве параметра.
-
Дочерняя хранимая процедура запускает некоторые запросы к временной таблице с помощью курсоров.
В этом сценарии возникает утечка памяти, которая снижает производительность SQL Server 2012.
Решение
Сведения о накопительном пакете обновления
Накопительное обновление 3 для SQL Server 2012 с пакетом обновления 1 (SP1)
Исправление для этой проблемы впервые выпущено в накопительном обновлении 3. Для получения дополнительных сведений о том, как получить этот накопительный пакет обновления для SQL Server 2012 SP 1, щелкните следующий номер статьи базы знаний Майкрософт:
2812412 Накопительный пакет обновления 3 для SQL Server 2012 с пакетом обновления 1 (SP1)Примечание. Поскольку сборки являются кумулятивными, каждый новый набор исправлений содержит все исправления и все исправления системы безопасности, которые были включены в предыдущий выпуск исправлений для SQL Server 2012 с пакетом обновления 1 (SP1). Рекомендуется установить последнюю версию исправления, которая включает это исправление. Дополнительные сведения см. в следующей статье базы знаний Майкрософт:
2772858 Сборки SQL Server 2012, выпущенные после выпуска пакета обновления 1 (SP1) для SQL Server 2012
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Дополнительная информация
В таблице ниже приведены дополнительные сведения о продуктах и средствах, которые автоматически проверяют условия, описанные в разделе "симптомы" в экземпляре SQL Server и в версиях SQL Server, для которых вычисляется правило.
Программное обеспечение для правил |
Название правила |
Описание правила |
Версии продуктов, для которых вычисляется правило |
---|---|---|---|
Системный центр Advisor |
Утечка памяти 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 |