KB4024393 - 修复:在 SQL Server 2016 或 2017 中恢复挂起的可用性数据库时,辅助副本 (replica) 上发生断言错误

应用对象
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 2016 Service Pack 1 SQL Server 2017 on Windows (all editions)

症状

假设你使用 Microsoft SQL Server 2016 或 2017 Always On 可用性组。 恢复挂起的可用性数据库时,次要副本 (replica) 上可能会发生断言错误。 此外,类似下面这样的错误消息将记录在次要副本 (replica) 的 SQL Server 错误日志中。

注意

  • 日期/时间 错误:17066,严重性:16,状态:1。
  • 日期/时间 SQL Server 断言:文件:<recovery.cpp,line>=行数失败 断言 = “recXdes-IsLockReleased> () && recXdes-GetOutstandingCount> () == 0”。 此错误可能与计时有关。 如果重新运行语句后错误仍然存在,请使用 DBCC CHECKDB 检查数据库的结构完整性,或重启服务器以确保内存中数据结构未损坏。
  • 日期/时间 错误:3624,严重性:20,状态:1。
  • 日期/时间系统断言检查失败。 查看 SQL Server 错误日志了解详细信息。 断言失败通常是由软件 bug 或数据损坏导致的。 若要检查数据库损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装过程中向 Microsoft 发送转储,则将向 Microsoft 发送一个小型转储。 更新可能来自 Microsoft 的最新服务包或技术支持的修补程序中提供。
  • 日期/时间 错误:3624,严重性:20,状态:2。
  • 日期/时间系统断言检查失败。 查看 SQL Server 错误日志了解详细信息。 断言失败通常是由软件 bug 或数据损坏导致的。 若要检查数据库损坏,请考虑运行 DBCC CHECKDB。 如果你同意在安装过程中向 Microsoft 发送转储,则将向 Microsoft 发送一个小型转储。 更新可能来自 Microsoft 的最新服务包或技术支持的修补程序中提供。
  • 日期/时间 错误:3313,严重性:21,状态:2。
  • 日期/时间 在数据库 DatabaseName 中重做记录的操作期间,日志记录 ID (RecordID) 发生错误。 通常,特定故障以前会在 Windows 事件日志服务中记录为错误。 从完整备份还原数据库,或修复数据库。
  • 日期/时间 Always On 可用性组 数据库 DatabaseName 的数据移动已挂起,原因如下: “system” (Source ID 2;源字符串:“SUSPEND_FROM_REDO”) 。 若要恢复数据库上的数据移动,需要手动恢复数据库。 有关如何恢复可用性数据库的信息,请参阅 SQL Server 联机丛书。
  • 日期/时间 ALTER DB 参数选项:RESUME
  • 日期/时间 Always On 数据库 DatabaseName 的数据移动已恢复。 这只是信息提供的消息。 无需用户操作。
  • 日期/时间 Always On 可用性组与为辅助数据库建立的连接 为可用性副本 (replica) 上的 DatabaseName ReplicaName 和副本 ID:ReplicaID。 这只是信息提供的消息。 无需用户操作。
  • 日期/时间为 ID 为 DatabaseID 的数据库标识了恢复 LSN (LsnNumber) 。 这只是信息提供的消息。 无需用户操作。

解决方法

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

SQL Server 2017 累积更新 1

SQL Server 2016 SP1 累积更新 5

关于 SQL Server 的累积更新:

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

SQL Server 2017 的最新累计更新

SQL Server 2016 的最新累计更新

状态

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

参考资料

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