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) 。
  • LSN 的一部分必须撤消新的辅助副本 (replica) 。
  • 在撤消过程中发生死锁,SQL 锁管理器会选择与故障转移关联的事务作为死锁受害者。

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

注意

等待缓冲区闩锁时发生超时 -- 类型 3,bp 0000003CE3093CC0,页 1:0,统计信息0x9,数据库 ID:11,分配单元 ID:6488064,任务0x0000001436F2A558:0,等待时间 300 秒,标志0x100000001a,拥有任务0x0000001436F2A558。 继续等待。
使用“dbghelp.dll”版本“4.0.5”
**转储线程 - spid = 0,EC = 0x0000001038514B90
要发送到file_path的堆栈转储
* *******************************************************************************
* BEGIN STACK DUMP:
* 日期时间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用于描述软件更新 的术语