Sql-Server

如何更改 SQL Server 數據庫的排序規則?

  • October 27, 2017

我正在嘗試在單個排序規則上標準化所有數據庫 - Latin1_General_CI_AS (標準排序規則)。我有一些數據庫位於 SQL_Latin1_General_CP1_CI_AS 中。

我知道我可以使用 ALTER DATABASE 來更改數據庫排序規則,但這只會影響新對象。我的理解是,更改現有列的唯一方法是對每個表中的每一列執行 ALTER COLUMN - 我需要刪除並重新創建所有索引才能做到這一點。

我想它看起來像這樣:

DROP INDEX indexname ON tablename

GO

ALTER TABLE tablename ALTER COLUMN columname varchar(50) COLLATE Latin1_General_CI_AS NULL

GO

CREATE CLUSTERED INDEX indexname ON tablename (columname ASC)

並對整個數據庫中的每個 varchar、char、text、nvarchar、nchar 和 ntext 列重複。那將是一個巨大的SQL 腳本。

有沒有更簡單的方法可以做到這一點,或者任何人都可以建議一種方法來自動創建 SQL 腳本來做到這一點?

MS KB 325335提供了有關如何對整個數據庫和所有列執行此操作的選項。

基本上:

  1. 腳本數據庫表(使用新排序規則)
  2. DTS/SSIS 數據(觀看整理)
  3. 添加約束

它可能需要一些調整,但我使用“SQL Server 2000 Collat​​ion Changer”實用程序取得了成功:http: //www.codeproject.com/KB/database/ChangeCollat ​​ion.aspx

引用自:https://serverfault.com/questions/19577