AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 289240
Accepted
Cell-o
Cell-o
Asked: 2021-04-05 05:04:13 +0800 CST2021-04-05 05:04:13 +0800 CST 2021-04-05 05:04:13 +0800 CST

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

  • 772

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

谢谢,

collation sql-server-2017
  • 3 3 个回答
  • 1612 Views

3 个回答

  • Voted
  1. Best Answer
    Solomon Rutzky
    2021-04-05T06:15:12+08:002021-04-05T06:15:12+08:00

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

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

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

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

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

    1. 这不适用于系统数据库。
    2. 如果您有许多依赖项之一(例如返回字符串列的 TVF、返回字符串类型的计算列等),则不允许这样做。
    3. 对于允许的用户数据库,它只更改系统表(例如sys.objects,,sys.schemas等);它不会更改任何用户表(列或索引)
    • 4
  2. J.D.
    2021-04-05T05:34:22+08:002021-04-05T05:34:22+08:00

    用于设置或更改数据库排序规则的 Microsoft 联机丛书解释了如何执行此操作,特别是如何在使用 SQL Server Management Studio部分中的SSMS中。或者,您也可以像这样编写脚本:

    ALTER DATABASE DatabaseName  
    COLLATE French_CI_AS;
    

    如果这些选项都不适用于系统数据库,那么在不运行安装程序或重建系统数据库的情况下就不可能这样做。

    无论哪种方式,我都建议您谨慎更改系统数据库的排序规则,因为如果操作不当,您可能会遇到许多问题。例如,需要与不区分大小写的上下文交互的区分大小写的排序规则可能会发生冲突并产生错误。此外,使用该函数在两个不同的整理上下文之间进行比较可能会导致基数估计问题。COLLATE

    另外,请注意,如果您将model数据库设置为与服务器的排序规则不同的排序规则,那么所有新创建的数据库将采用与数据库相同的排序规则model并忽略服务器的排序规则。

    • 1
  3. Dan Guzman
    2021-04-05T05:29:50+08:002021-04-05T05:29:50+08:00

    您可以使用 setup rebuild database 操作更改实例和系统数据库排序规则。这将使用指定的排序规则重新创建系统数据库,而无需重新安装二进制文件。重建后的系统数据库基本上是全新安装,因此对系统对象(登录名、作业等)的任何更改都将丢失。

    • 0

相关问题

  • 为什么 cp1256 排序规则在 MySQL 中不是 1 个字节?

  • MySQL 中的 utf8_general_ci 和 utf8_unicode_ci 以及 utf8_binary 排序规则有什么区别?

  • 多国数据库的多个字符集和排序规则

  • 更改为 utf8_general_ci 时 DateTime 的默认值无效

  • 如何从 SQL_Latin1_General_CP1_CI_AS 中提取一个 lessequal 字符?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve