KB4089819 - 修复:在 SQL Server 2016 或 2017 中使用可用性组时,出现“等待缓冲区闩锁时出现超时 -- 类型 4”错误

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

症状

在 Microsoft SQL Server 2016 或 2017 中使用Always On可用性组时,如果同一副本 (replica) 上存在并发只读查询,则会暂停可读辅助副本 (replica) 的并行恢复,并且您收到以下错误消息:

注意

日期\时间 SPID 等待缓冲区闩锁时出现超时 -- 类型 4,bp 000000E66DA93540,page PageID,stat 0xb,数据库 ID: DatabaseID,分配单元 ID: UnitID,任务 TaskID,waittime 300 秒,标志 0x1018,拥有任务 TaskID。 不会继续等待。

解决方法

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

SQL Server 2017 累积更新 6

SQL Server 2016 SP1 累积更新 8

关于 SQL Server 的累积更新:

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

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新累计更新

解决方法

若要解决此问题,请使用以下某种方法:

  • 避免主要副本 (replica) 和次要副本 (replica) 同时在同一表上工作。
  • 设置查询超时,以便在查询执行 1 或 2 分钟后退出查询。
  • 降低 MAXDOP。

状态

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

参考资料

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