KB4470916 - 修复:在 2014 年和 2016 SQL Server,当数据库节点内存 (KB) 降至 2% 以下时,会出现内存不足错误

应用对象
SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) 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)

症状

假设您使用 Microsoft SQL Server 2014 或 2016。 在 NUMA 节点上检查可用内存使用情况时,会注意到数据库节点内存 (KB) 小于目标大小的 2%。 发生这种情况时,可能会收到以下“内存不足”错误消息:

日期/时间 spid36s 无法分配 BUF:FAIL_BUFFER_ALLOCATION 1

即使 SQL Server 中有大量可用内存,也会出现此问题。 

原因

当数据库节点内存 (KB) 小于目标大小的 2%,并且它不能再放弃节点上的数据库页以获取可用页时,可能会发生“内存不足”错误。

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

解决方法

此问题已在 SQL Server 的以下累积更新中修复:

关于 SQL Server 的累积更新:
SQL Server 的每个新累积更新都包含上一个累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

备注应用此修补程序后,如果本地节点上的数据库页数低于其目标页的 2%,则 SQL Server 将能够从远程缓冲区节点回收页。

参考资料

了解 Microsoft 用于描述软件更新的术语。