症状
假设在运行 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 (TB) 开始,然后继续向下攀升, (GB) 达到几千兆字节。
如果处于可用虚拟地址空间非常少的阶段,尝试执行内存分配的查询也可能会遇到等待类型的 CMEMTHREAD。
随着时间推移,以下数据点将继续增加:
- DMV:sys.dm_os_process_memory和sys.dm_os_memory_nodes - 列virtual_address_space_reserved_kb
- DBCC MEMORYSTATUS - 内存管理器部分 - VM 保留
这些值通常以“最大服务器内存”值的倍数增加,高达近 8 TB。
注意知识库3074434中也介绍了相关问题。
解决方法
此更新包含在以下SQL Server累积更新中:
SQL Server 2014 Service Pack 2 的累积更新 10
关于SQL Server的累积更新:
SQL Server的每个新累积更新都包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看SQL Server的最新累积更新:
注意 应用此更新后,必须添加跟踪标志 8075 作为启动参数才能启用此更改。
状态
Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。
参考资料
了解 Microsoft 用于描述软件更新的术语。