将用户定义的数据库排序规则设置为与 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 )
    

有关详细信息,请参阅:

设置或更改数据库排序规则

设置或更改列排序规则

ALTER DATABASE (Transact-SQL)

COLLATE (Transact-SQL)

sys.databases (Transact-SQL)

Microsoft 知识库文章 325335

如何从命令提示符安装 SQL Server 2008

请参阅

概念

使用基于策略的管理来监视和强制执行最佳实践