设置用户定义的数据库的排序规则以便与 Master 数据库一致

此规则检查用户定义的数据库是否是使用与 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 )