在SQL 2005中更改聚簇索引列上的排序规则

问题描述:

我有一个使用错误排序规则创建的数据库。我改变了数据库的排序规则,但是这也留下了不正确排序规则的各个列。这会导致我一个问题。在SQL 2005中更改聚簇索引列上的排序规则

因此,我编写了一个脚本来循环遍历并更改各个列的排序规则,基本上它工作正常,除了在其各自表上的一些列是聚簇索引的一部分。这些我不能改变。

例如,如果我运行:

ALTER TABLE MyTable 
ALTER COLUMN MyColumn varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL 

我得到的回应:

Msg 5074, Level 16, State 1, Line 1 
The object 'DF_MyTable_MyColumn' is dependent on column 'MyColumn'. 
Msg 5074, Level 16, State 1, Line 1 
The object 'PK_MyTable_MyColumn_MyOtherColumn' is dependent on column 'MyColumn'. 
Msg 4922, Level 16, State 9, Line 1 
ALTER TABLE ALTER COLUMN deleted failed because one or more objects access this column. 

有什么办法可以解决这个改变这些列的排序规则?显然,我不能放弃索引,因为它形成了主键。我想我可以暂时取消PK,但我宁愿不要。

您必须删除所有依赖关系。

当您更改DB归类时,只更改系统表。 需要手动更改所有其他文本类型的列。

一般而言,MS KB 325335有关于如何对整个分区和所有列执行此操作的选项