KB4077105 . ИСПРАВЛЕНИЕ. Ошибка нехватки памяти, когда виртуальное адресное пространство SQL Server процесса очень мало SQL Server

Применяется к
SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Проблема

Предположим, что вы установили 64-разрядную версию Microsoft SQL Server 2014, 2016 или 2017 на компьютере под управлением Windows Server 2012 или более ранней версии операционной системы Windows. Если SQL Server использует все виртуальное адресное пространство в пользовательском режиме, в журнале ошибок SQL Server может появилось сообщение об ошибке нехватки памяти. Кроме того, выполнение запросов занимает много времени, и происходит SOS_MEMORY_TOPLEVELBLOCKALLOCATOR ожидания.

При изучении следующих информационных точек вы обнаружите, что доступное виртуальное адресное пространство очень мало:

  • DBCC MEMORYSTATUS — раздел Количество процессов и систем — доступная виртуальная память
  • Динамическое административное представление: sys.dm_os_process_memory — virtual_address_space_available_kb столбцов

Эти значения начинаются около 8 терабайт (ТБ) в процессе x64 и продолжают уменьшаться и достигать нескольких гигабайт (ГБ).

Когда вы находитесь на этапе, когда доступное виртуальное адресное пространство очень мало, запросы, которые пытаются выполнить выделение памяти, также могут столкнуться с типом ожидания CMEMTHREAD.

Следующие точки данных будут продолжать увеличиваться с течением времени:

  • Динамическое административное представление: sys.dm_os_process_memory и sys.dm_os_memory_nodes — virtual_address_space_reserved_kb столбцов
  • DBCC MEMORYSTATUS — раздел диспетчера памяти — зарезервировано виртуальной машиной

Эти значения обычно увеличиваются в кратном значении "max server memory" до почти 8 ТБ.

Примечание Связанная проблема также описана в 3074434 базы знаний.

Решение

Это обновление входит в следующие накопительные обновления для SQL Server:

Накопительный пакет обновления 4 для SQL Server 2017 г.

Накопительный пакет обновления 8 для SQL Server 2016 с пакетом обновления 1 (SP1)

Накопительный пакет обновления 10 для SQL Server 2014 с пакетом обновления 2 (SP2)

Сведения о накопительных обновлениях для SQL Server:

Каждое новое накопительное обновление для SQL Server содержит все исправления и все исправления для системы безопасности, которые были включены в предыдущее накопительное обновление. Ознакомьтесь с последними накопительными обновлениями для SQL Server:

Последнее накопительное обновление для SQL Server 2017 г.

Последнее накопительное обновление для SQL Server 2016 г.

Последнее накопительное обновление для SQL Server 2014 г.

Примечание После применения этого обновления необходимо добавить флаг трассировки 8075 в качестве параметра запуска, чтобы включить это изменение.

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.