更改系统数据库 SQL Server 2017 的排序规则

Cel*_*l-o 3 collation sql-server-2017

我们使用带有“SQL_Latin1_General_CP1_CI_AS”的全新 SQL Server 2017 CU23 标准版数据库。现在,我想将所有系统数据库( master 、 model 、 temp 、 msdb )更改为另一种排序规则。如何在不安装 SQL Server 的情况下更改此设置?

谢谢,

Sol*_*zky 5

在不重新安装的情况下更改实例本身(实例级和系统数据库以及用户数据库)的排序规则的唯一方法是使用未记录的命令/选项。其他答案中提到的“重建系统数据库”选项实际上是重新安装,即使它不是字面意义上的,该方法也不会更新任何用户数据库以匹配新的排序规则。

我在这里发布了对这种未记录方法的详细分析,以及对实例和/或数据库进行任何排序规则更改的影响:

更改实例、数据库和所有用户数据库中所有列的排序规则:可能会出现什么问题?

有相当多的领域可能会受到影响,这在很大程度上取决于您是否仅讨论一个特定数据库,或者该实例以及该实例上的一个或多个数据库,以及您是否有任何包含带有值的VARCHAR字符的数据128 - 255,以及您是否要切换敏感度(例如,区分大小写改为区分大小写,反之亦然)。

关于选项ALTER DATABASE ... COLLATE ...

  1. 这不适用于系统数据库。
  2. 如果您有许多依赖项之一(例如返回字符串列的 TVF、返回字符串类型的计算列等),则不允许这样做。
  3. 对于允许的用户数据库,它仅更改系统表(例如sys.objects,,sys.schemas等);它不会更改任何用户表(列或索引)