FIX: Assertion error occurs when you run a MERGE statement with an OUTPUT clause in SQL Server 2016 and 2017

Applies to: SQL Server 2017 Developer on WindowsSQL Server 2017 Enterprise on WindowsSQL Server 2017 Enterprise Core on Windows


Consider the following scenario:

  • You run a MERGE statement that has an OUTPUT clause within a Stored Procedure or an ad hoc Transact-SQL batch in SQL Server 2016 or 2017 on Windows.
  • The destination database uses BULK_LOGGED or SIMPLE RECOVERY MODEL.
  • You insert a large amount of data (for example: around 6,000 rows) into a table in another database.

In this scenario, an assertion error occurs, and you may receive an error message that resembles the following:

Msg 3624, Level 20, State 1, Line LineNumber

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.


Cumulative update information:

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

      Cumulative Update 12 for SQL Server 2017

      Cumulative Update 4 for SQL Server 2016 SP2

      Cumulative Update 13 for SQL Server 2016 Service Pack 1

      Cumulative Update 12 for SQL Server 2016 SP1

On-demand hotfix information:

This issue is fixed in the following on-demand hotfixe for SQL Server:


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


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