Как преобразовать кластерный первичный ключ в некластеризованный, не отбрасывая внешние ссылочные ключи в SQL Server 2005 - PullRequest
5 голосов
/ 19 февраля 2010

Я сделал ошибку, создав кластерный первичный ключ в столбце GUID. Есть много таблиц, которые ссылаются на эту таблицу с определенными внешними ключами. Размер таблицы не имеет значения.

Я хотел бы преобразовать его из кластеризованного в некластеризованный без ручного удаления и повторного создания любых внешних ключей или даже ограничения первичного ключа.

Можно ли добиться этого в MS SQL2005 и как, если да?

Можно ли достичь этого ОНЛАЙН (без времени простоя дБ), если да?

1 Ответ

3 голосов
/ 19 февраля 2010

Вы можете сначала попытаться создать уникальный некластеризованный индекс NC, а затем удалить кластеризованный PK.FK должен распознавать этот другой индекс (но не может: никогда не пробовал).

Когда вы запускаете ALTER TABLE, чтобы отбросить кластерный ПК, используйте опцию ONLINE .Однако он доступен только в редакции Enterprise.

ALTER TABLE Mytable DROP CONSTRAINT PK_Mytable WITH (ONLINE = ON)

Нельзя использовать ONLINE для бита ADD CONSTRAINT.

По сути, ваши параметры ограничены без блокировки или создания другой таблицы в первую очередь.и перемещение данных по ...

...