7

我在 GUID 列上创建聚集主键时犯了错误。有许多表使用已定义的外键引用该表。表大小并不重要。

我想将它从集群转换为非集群,而无需手动删除和重新创建任何外键甚至主键约束。

是否有可能在 MS SQL2005 中实现这一点,如果是的话怎么办?

如果是的话,是否有可能实现在线(没有数据库停机时间)?

4

1 回答 1

3

您可以先尝试创建唯一的非聚集 NC 索引,然后删除聚集的 PK。FK 应该识别这个其他索引(但可能不会:从未尝试过)。

当您运行 ALTER TABLE 删除集群 PK 时,请使用ONLINE选项。但是,它仅在企业版中可用。

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

您不能将 ONLINE 用于 ADD CONSTRAINT 位。

基本上,您的选择是有限的,没有阻塞,或者首先创建另一个表并移动数据......

于 2010-02-19T05:38:29.690 回答