在SQL 2005中更改聚簇索引列上的归类

时间:2009-02-24 12:02:51

标签: sql-server sql-server-2005 collation

我有一个使用不正确的排序规则创建的数据库。我更改了数据库的排序规则,但这也使得各个列的排序规则也不正确。这给我带来了麻烦。

因此,我编写了一个脚本来循环并更改各列的排序规则,这基本上有效,除了几个列是各自表的聚簇索引的一部分。这些我无法改变。

例如,如果我跑:

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,但我宁愿不这样做。

1 个答案:

答案 0 :(得分:2)

您必须删除所有依赖项。

更改数据库归类时,只更改系统表。 所有其他文本类型列都需要手动更改。

通常,MS KB 325335有关于如何为整个数据库和所有列

执行此操作的选项