KB3207327 - 修复:在故障转移时,新的辅助副本 (replica) 停止接受事务日志记录,直到实例在 SQL Server 中重新启动

应用对象
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 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)

症状

请考虑以下情形:

  • 你使用 Microsoft SQL Server 2012、2014 或 2016 AlwaysOn 可用性组。
  • 发生故障转移,主副本 (replica) 成为新的次要副本 (replica) 。
  • 必须在新的次要副本 (replica) 上撤消部分 LSN。
  • 在撤消过程中发生死锁,SQL 锁管理器将故障转移关联事务选为死锁受害者。

在这种情况下,新的次要副本 (replica) 将停止接受事务日志记录,直到实例重新启动。 此外,每隔几分钟就会在 SQL Server 错误日志中记录一个类似如下的闩锁超时错误消息:

注意

wait for buffer latch -- type 3, bp 0000003CE3093CC0, page 1:0, stat 0x9, database id: 11, allocation unit id: 6488064, task 0x0000001436F2A558 : 0, waittime 300 seconds, flags 0x100000001a, owning task 0x0000001436F2A558. 继续等待。
使用“dbghelp.dll”版本“4.0.5”
**转储线程 - spid = 0,EC = 0x0000001038514B90
正在发送到file_path的堆栈转储
* *******************************************************************************
* 开始堆栈转储:
* 日期时间 spid spid
* 闩锁超时
* *******************************************************************************

      

解决方法

此问题已在 SQL Server 的累积更新中进行了修复:

     SQL Server 2016 RTM 的累积更新 5

     SQL Server 2016 SP1 累积更新 2

         SQL Server 2014 Service Pack 2 累积更新 3
     SQL Server 2014 SP1 累积更新 11

SQL Server 2012 SP3 累积更新 7

关于 SQL Server 的累积更新

关于 SQL Server 的累积更新

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

     SQL Server 2016 的最新累计更新

SQL Server 2014 的最新累计更新

状态

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

参考资料

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