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 是最实用的解决方法。
同一数据库的其他条目
- 3702Cannot drop database because it is currently in use(无法删除数据库,因为它当前正在使用)
- 15138The database principal owns a schema in the database, and cannot be dropped(数据库主体在数据库中拥有架构,无法删除)
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings(INSERT/UPDATE 失败,因为以下 SET 选项的设置不正确)
- 4864Bulk load data conversion error (type mismatch or invalid character)(大容量加载数据转换错误(类型不匹配或无效字符))
- 916The server principal is not able to access the database under the current security context(服务器主体无法在当前安全上下文中访问数据库)