FIX: Assertion error occurs on the secondary replica when you resume a suspended availability database in SQL Server 2016 or 2017

Aplica-se a: SQL Server 2016 DeveloperSQL Server 2016 EnterpriseSQL Server 2016 Enterprise Core

Symptoms


Assume that you use Microsoft SQL Server 2016 or 2017 Always On Availability Groups. When you resume a suspended availability database, an assertion error may occur on the secondary replica. Additionally, error messages that resemble the following are logged in the SQL Server error log on the secondary replica.

Date/Time Error: 17066, Severity: 16, State: 1.

Date/Time SQL Server Assertion: File: <recovery.cpp>, line=LineNumber Failed Assertion = 'recXdes->IsLockReleased () && recXdes->GetOutstandingCount () == 0'. This error may be timing-related. If the error persists after rerunning the statement, use DBCC CHECKDB to check the database for structural integrity, or restart the server to ensure in-memory data structures are not corrupted.

Date/Time Error: 3624, Severity: 20, State: 1.

Date/Time A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

Date/Time Error: 3624, Severity: 20, State: 2.

Date/Time A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a Hotfix from Technical Support.

Date/Time Error: 3313, Severity: 21, State: 2.

Date/Time During redoing of a logged operation in database DatabaseName, an error occurred at log record ID (RecordID). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.

Date/Time Always On Availability Groups data movement for database DatabaseName has been suspended for the following reason: "system" (Source ID 2; Source string: 'SUSPEND_FROM_REDO'). To resume data movement on the database, you will need to resume the database manually. For information about how to resume an availability database, see SQL Server Books Online.

Date/Time ALTER DB param option: RESUME

Date/Time Always On Availability Groups data movement for database DatabaseName has been resumed. This is an informational message only. No user action is required.

Date/Time Always On Availability Groups connection with primary database established for secondary database DatabaseName on the availability replica ReplicaName with Replica ID: ReplicaID. This is an informational message only. No user action is required.

Date/Time The recovery LSN (LsnNumber) was identified for the database with ID DatabaseID. This is an informational message only. No user action is required.

Resolution


This issue is fixed in the following cumulative updates for SQL Server:

       Cumulative Update 1 for SQL Server 2017

       Cumulative Update 5 for SQL Server 2016 SP1

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
 

References


Learn about the terminology that Microsoft uses to describe software updates.