KB5001045 - 修复:在 2017 年和 2019 SQL Server同时运行多个列存储大容量插入时内存授予等待超时

应用对象
SQL Server 2017 on Windows SQL Server 2017 on Linux SQL Server 2019 on Linux SQL Server 2019 on Windows

症状

在内存不足的计算机上,在 Microsoft SQL Server 2017 和 2019 中同时运行多个聚集列存储大容量插入时,可能会收到内存授予超时错误。

状态

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

更多信息

列存储大容量插入查询可能需要大量内存用于列存储 insert 运算符和查询中任何其他内存消耗运算符,例如排序。

默认情况下,SQL Server等待 25 秒以获取内存授予。 如果大容量插入仍无法获取必要的内存,它将回退到滴流插入,以确保查询可以进行。 (有关细流插入的详细信息,请参阅 列存储索引 - 数据加载指南) 。

但是,仅当当前资源池中具有内存授予的活动会话数小于与逻辑核心数成比例的特定阈值时,才会发生这种情况。 如果此类并发会话数过多,则批量插入查询可能会失败,并在 25 秒后生成内存授予超时错误。 这可能会给数据加载应用程序造成意外问题。 此更新更改了大容量插入等待内存授予的方式。 插入现在将使用类似于任何其他查询类型的计算的超时值。

解决方法

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

关于SQL Server的累积更新:

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

参考资料

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