Applies ToSQL 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 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Standard on Windows SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows 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)

Symptoms

Assume that you have a query that performs some string operations for example, concatenation, on CHAR or VARCHAR columns in Microsoft SQL Server 2014, 2016, and 2017. Consider the following scenario:

  • You concatenate columns with different collations that are assigned to them.

  • Those collations are incompatible with one another. For example, you try to concatenate a column that's collated as Latin1_General_CI_AI with Latin1_General_BIN.

  • The final result of the concatenation is assigned to a specific collation (including "database_default") as a matter of the collation conflict resolution.

In this scenario, SQL Server may return a retail assert that states "Invalid comparison due to NO COLLATION", and you may receive some error messages that resemble the following:

Location:     typinfo.cpp:LineNumber Expression:   false SPID:         SPID Process ID:   ProcessID Description:  Invalid comparison due to NO COLLATION.

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.

Msg 596, Level 21, State 1, Line LineNumber Cannot continue the execution because the session is in the kill state.

Msg 0, Level 20, State 0, Line LineNumber

A severe error occurred on the current command.  The results, if any, should be discarded.

Cause

During the query optimization stage, SQL Server tries to compute cardinalities on intermediate results of various stages of the query, for example, the concatenation. Because the collation conflict resolution takes place at the very end, the query optimizer may be unaware of it and tries to perform the computation of the concatenation cardinality on an input with conflicted collation.

Resolution

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

       Cumulative update 8 for SQL Server 2016 SP1  

       Cumulative Update 4 for SQL Server 2017

       Cumulative Update 9 for SQL Server 2014 SP2

Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. Check out the latest cumulative updates for SQL Server:

Latest cumulative update for SQL Server 2016

Latest cumulative update for SQL Server 2017

Latest cumulative update for SQL Server 2014

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 terminologythat Microsoft uses to describe software updates.

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.