FIX: The Target Recovery Time of a database set to a nonzero value causes an assertion and a lease timeout in SQL Server

Applies to: SQL Server 2012 DeveloperSQL Server 2012 EnterpriseSQL Server 2012 Enterprise Core


Assume that you have the target recovery time of a database set to a nonzero value in Microsoft SQL Server 2012,2014 or 2016. If an assertion occurs during the checkpoint process, the assertion causes a lease timeout on the database, and you receive the following dump file:
date time  spid14s Error: 17066, Severity: 16, State: 1.
date time spid14s SQL Server Assertion: File: <recoveryunit.cpp>, line=7849 Failed Assertion = 'm_ReducedDataSlice <= MaxReducedDataSlice'. 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 spid14s Error: 3624, Severity: 20, State: 1.
date time spid14s 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 spid14s Error: 18400, Severity: 16, State: 1.
date time spid14s The background checkpoint thread has encountered an unrecoverable error. The checkpoint process is terminating so that the thread can clean up its resources. This is an informational message only. No user action is required.


To work around this issue, set the target recovery time to zero for the affected database.


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


Learn about the terminology Microsoft uses to describe software updates.