将用户定义的数据库排序规则设置为与 master 和 model 数据库的排序规则一致
此规则检查用户定义的数据库是否是使用与 master 或 model 相同的数据库排序规则进行定义的。
最佳实践建议
建议用户定义的数据库排序规则与 master 或 model 的排序规则一致。 否则,可能会发生使代码无法执行的排序规则冲突。 例如,当存储过程将一个表连接到一个临时表时,如果用户定义的数据库排序规则与 model 数据库的排序规则不同,SQL Server 可能会结束该批处理并返回一个排序规则冲突错误。 出现这种情况的原因是临时表是在 tempdb 中创建的,而后者的排序规则基于 model 的排序规则。
如果遇到排序规则冲突错误,请考虑下面的解决方案之一:
从用户数据库中导出数据,并将该数据导入排序规则与 master 和 model 数据库排序规则相同的新表中。
重新生成系统数据库以使用与用户数据库排序规则一致的排序规则。 有关如何重新生成系统数据库的详细信息,请参阅重新生成系统数据库。
修改将用户表连接到 tempdb 中的表的任何存储过程,以便使用用户数据库的排序规则在 tempdb 中创建表。 为此,请在临时表的列定义中添加 COLLATE database_default 子句,如下面的示例所示:
CREATE TABLE #temp1 ( c1 int, c2 varchar(30) COLLATE database_default )