2009-09-07 147 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 – 2009-09-07 08:13:32

回答

4

我認爲你必須:

  1. 降FK
  2. 降PK
  3. 刪除聚簇索引
  4. 重新創建PK
  5. 重新創建FK
  6. 重新創建的FK列

,然後根據需要創建的PK列secondry指數的聚集索引

1

你試過掉落PRIMARY KEY約束在桌子上 - 然後刪除索引 - 然後重新添加?

ALTER TABLE table_name DROP primary key 
+0

這不會是一個問題,如果他有一個FK – 2009-09-07 08:14:45

+0

可能,但問題不清楚是否外鍵已設置在此列上 - 我只是解決眼前的問題。 如果我們擔心外鍵,我們需要考慮所有外鍵。這可能是許多依賴於此列的外鍵:可能需要大量外鍵銷燬/重新實施。 – 2009-09-07 08:21:43

+0

非常好的一點! – 2009-09-07 08:36:00