如何更改 SQL Server 数据库的排序规则?

Ric*_*den 16 sql sql-server sql-server-2005

我正在尝试在单个排序规则上标准化所有数据库 - 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)
Run Code Online (Sandbox Code Playgroud)

并对整个数据库中的每个 varchar、char、text、nvarchar、nchar 和 ntext 列重复。那将是一个巨大的SQL 脚本。

有没有更简单的方法来做到这一点,或者任何人都可以建议一种自动创建 SQL 脚本的方法来做到这一点?

gbn*_*gbn 9

MS KB 325335提供了有关如何对整个数据库和所有列执行此操作的选项。

基本上:

  1. 脚本数据库表(带有新的排序规则)
  2. DTS/SSIS 数据(观看整理)
  3. 添加约束