Sql-Server-2017

更改系統數據庫 SQL Server 2017 的排序規則

  • April 4, 2021

我們正在使用帶有“SQL_Latin1_General_CP1_CI_AS”的全新 SQL Server 2017 CU23 標準版數據庫。現在,我想將所有系統數據庫(master、model、temp、msdb)更改為另一個排序規則。如何在不安裝 SQL Server 的情況下更改它?

謝謝,

在不重新安裝的情況下更改實例本身(實例級和系統 DB加上使用者數據庫)的排序規則的唯一方法是未記錄的命令/選項。其他答案中提到的“重建系統數據庫”選項實際上是重新安裝,即使它不是字面意義上的,這種方法也不會更新任何使用者數據庫以匹配新的排序規則。

我在此處發布了對這種未記錄方法的詳細分析,以及對實例和/或數據庫進行任何排序規則更改的含義:

更改所有使用者數據庫中的實例、數據庫和所有列的排序規則:可能出了什麼問題?

有相當多的領域可能會受到影響,這在很大程度上取決於您是在談論一個特定的數據庫,還是在談論該實例和該實例上的一個或多個數據庫,以及您是否有任何VARCHAR包含帶有值的字元的數據128 - 255,並且如果您正在切換敏感性(例如區分大小寫到區分大小寫,反之亦然)。

關於ALTER DATABASE ... COLLATE ...選項:

  1. 這不適用於系統數據庫。
  2. 如果您有許多依賴項之一(例如返回字元串列的 TVF、返回字元串類型的計算列等),則不允許這樣做。
  3. 對於允許的使用者數據庫,它只更改系統表(例如sys.objects,,sys.schemas等);它不會更改任何使用者表(列或索引)

引用自:https://dba.stackexchange.com/questions/289240