DBAtlas · 数据库运维图谱

468: Cannot resolve the collation conflict(无法解决排序规则冲突)

SQL Server

含义

在某个操作(JOIN、UNION、WHERE 比较或等值判断)中,两个排序规则不同的字符串表达式相遇,SQL Server 无法确定应采用哪种排序规则。操作因歧义而被取消。

原因

被比较的列以不同的排序规则定义;最常见于数据库排序规则与服务器/tempdb 排序规则不同,或连接排序规则不同的数据库中的表。将临时表(tempdb 排序规则)与永久表连接是典型诱因。

解决方法

在比较中指定显式排序规则:... WHERE a.col = b.col COLLATE DATABASE_DEFAULT(或具体的排序规则名)。创建临时表列时使用 COLLATE DATABASE_DEFAULT。作为永久方案,将受影响的列/数据库统一为一致的排序规则。如果与 tempdb 的不匹配经常发生,DATABASE_DEFAULT 是最实用的解决方法。

在 DBAtlas 中打开 →

同一数据库的其他条目