症状
假设你在运行 Windows Server 2012 或早期版本的 Windows 操作系统的计算机上安装64位版本的 Microsoft SQL Server 2014、2016或2017。 当 SQL Server 使用所有用户模式虚拟地址空间时,您可能会在 SQL Server 错误日志中收到内存不足错误消息。 此外,查询需要很长时间才能完成执行,并且会发生 SOS_MEMORY_TOPLEVELBLOCKALLOCATOR 等待。
当你检查以下信息点时,你将发现有非常少的可用虚拟地址空间:
-
DBCC MEMORYSTATUS-进程/系统计数部分-可用虚拟内存
-
DMV: sys.dm_os_process_memory 列 virtual_address_space_available_kb
这些值在 x64 进程上从 8 tb 开始,并继续顺向下并达到几千兆字节(GB)。
当处于可用虚拟地址空间较低的阶段时,尝试执行内存分配的查询也可能会遇到 CMEMTHREAD 的等待类型。
以下数据点将随着时间的推移不断增加:
-
DMV: sys.dm_os_process_memory 和 sys.dm_os_memory_nodes 列 virtual_address_space_reserved_kb
-
DBCC MEMORYSTATUS-内存管理器部分-VM 保留
这些值通常会以 "最大服务器内存" 值的倍数增加到几乎 8 TB。
注意相关问题也在KB 3074434中介绍。
解决方案
此更新包含在 SQL Server 的以下累积更新中:
SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:
注意 应用此更新后,你必须将跟踪标记8075添加为启动参数以启用此更改。
状态
Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。
参考
了解 Microsoft 用于描述软件更新的 术语。