FIX: "Invalid comparison due to NO COLLATION" retail assert occurs in SQL Server 2014, 2016, and 2017

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


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

Msg 596, Level 21, State 1, Line LineNumber

Msg 0, Level 20, State 0, Line LineNumber



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.





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