sql - 如何在不删除 SQL Server 2005 中的引用外键的情况下将群集主键转换为非群集主键

标签 sql sql-server-2005 foreign-keys primary-key clustered-index

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

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

是否有可能在 MS SQL2005 中实现,如果是,如何实现?

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

最佳答案

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

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

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

您不能将 ONLINE 用于 ADD CONSTRAINT 位。

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

关于sql - 如何在不删除 SQL Server 2005 中的引用外键的情况下将群集主键转换为非群集主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293073/

相关文章:

java - 将java日期转换为Sql时间戳

sql - 引发异常以禁止更新 PostgreSQL 中的列

mysql - 只返回一个 SQL 查询结果的元组

sql-server - 如何查找 SQL Server 数据库中所有空间的使用情况

mysql - 我的 mysql 外键约束有什么问题?

sql连接表,没有提供完美的结果

sql-server-2005 - 在 SQL Reporting 2005 中更改货币符号

ASP.NET > SqlServer;信任和授权

python - 将 SQLAlchemy 与复合主键和外键一起使用

MySQL - 根据条件连接 3 个表