2009-09-07 2 views
4

Как изменить первичный кластерный индекс, чтобы стать индексом без кластеризации. (Будучи «вторичным» столом я хочу использовать clustured индекс для столбца внешнего ключа таблицы «заголовка».)SQL Server: измените кластерный первичный индекс на некластеризованный

Это doen't работа для меня (ошибка кажется разумным :)

DROP INDEX ClientUsers.PK_ClientUsers 
CREATE UNIQUE CLUSTERED INDEX IDX_ClientUsers_Id ON ClientUsers(Id) 

Msg 3723, Level 16, State 4, Line 7 
An explicit DROP INDEX is not allowed on index 'ClientUsers.PK_ClientUsers'. 
It is being used for PRIMARY KEY constraint enforcement. 
+0

Вы пробовали сначала перенести ограничение первичного ключа? ALTER TABLE ClientUsers DROP CONSTRAINT PK_ClientUsers –

ответ

4

Я думаю, вы должны:

  1. уронить FK
  2. уронить PK
  3. падения кластерного индекса
  4. Воссоздать PK
  5. Воссоздать FK
  6. Воссоздать кластерный индекс по столбцу FK

, а затем, возможно создать Secondry индекс по столбцу PK

1

Вы пробовали сбросив PRIMARY KEY ограничение на столе, а затем - сбросить индекс, а затем снова добавить оба?

ALTER TABLE table_name DROP primary key 
+0

не будет проблемой, если у него есть FK –

+0

Возможно, но вопрос не был ясен, если внешний ключ был настроен в этом столбце еще - я просто обращался к непосредственной проблеме , Если мы беспокоимся о внешних ключах, нам нужно подумать обо всех внешних ключах. Это может быть много иностранных ключей, зависящих от этой колонки: может потребоваться много уничтожения/восстановления внешнего ключа. –

+0

очень хороший пункт! –

Смежные вопросы