2009-02-24 7 views
3

J'ai une base de données qui a été créée avec un classement incorrect. J'ai changé le classement de la base de données, mais cela a également laissé les colonnes individuelles avec le classement incorrect. Cela me cause un problème. Donc, j'ai écrit un script pour faire une boucle et changer le classement des colonnes individuelles et cela a fonctionné, à l'exception de quelques colonnes qui font partie d'un index clusterisé sur leurs tables respectives. Ceux-ci je ne peux pas changer.Modifier la collation sur la colonne de l'index cluster dans SQL 2005

Par exemple, si je lance:

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

je reçois une réponse:

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. 

est-il un moyen de contourner cela pour modifier le classement de ces colonnes? Je ne peux pas supprimer l'index, évidemment, car il forme la clé primaire. Je suppose que je pourrais temporairement retirer le PK mais je préférerais ne pas le faire.

Répondre

2

Vous devez supprimer toutes les dépendances.

Lorsque vous modifiez le classement de base de données, vous modifiez uniquement les tables système. Toutes les autres colonnes de type texte doivent être modifiées manuellement.

En général, MS KB 325335 a des options sur la façon de le faire pour l'ensemble db et toutes les colonnes

Questions connexes