KB4101554 - 修复:在包含堆表的可用性组的辅助副本 (replica) 中并行重做会生成运行时断言转储,否则SQL Server崩溃并出现访问冲突错误

应用对象
SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core 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)

症状

假设使用包含堆表 (AG) Always On可用性组。 从 2016 SQL Server 开始,辅助副本将使用用于重做操作的并行线程。 在这种情况下,堆表重做操作可能会生成运行时断言转储,或者在某些情况下,SQL Server可能会崩溃并出现访问冲突错误。

原因

应用以下文章中提到的累积更新后,会出现此问题:

4018866 FIX:与 SQL Server 2014 或更低版本相比,并行重做会导致 2016 SQL Server内存使用率过高

解决方法

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

SQL Server 2016 SP1 的累积更新 9

SQL Server 2016 SP2 的累积更新 1

2017 SQL Server累积更新 6

关于 SQL Server 的累积更新

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

SQL Server 2016 年的最新累积更新

SQL Server 2017 的最新累计更新

解决方法

若要解决此问题,请通过启用跟踪标志 3459 禁用并行重做。

状态

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

参考资料

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