我发现在风暴给出的答案中应该增加一些额外的步骤,因为有一些要点,比如……在删除聚集索引之前,需要删除发布,因为它不允许在此之前删除聚集索引,并且在删除这些分区方案和分区函数之后,需要重新创建这些分区方案和分区函数,并且还需要重新启动发布。
注意:我使用的是SQL 2012
主键通常是最常用的聚集约束,所以无论我在何处使用主键,请考虑这些步骤也适用于聚集约束。另外,ps=分区方案,pf=分区函数。
一些准备步骤:
-
生成放置发布脚本
-
创建发布脚本
-
标识与分区方案有依赖关系的所有表,并记下它们的主键/聚集索引。此外,记下主键列使用的所有字段(最好为主键或聚集索引生成脚本)。
-
为受影响的表编写脚本。
-
为有问题的pf和ps编写脚本。
以上所有这些,都是在右键单击时使用SQL Management Studio“生成脚本”。然后选择Drop和Create。
现在,当一切就绪。
1。删除发布(使用生成的脚本)
2。删除那些与ps链接的表的主键约束。
alter table [tablename] drop constraint [pk_name]
三。创建一个虚拟约束,但使用的字段与删除的主键中使用的字段相同。
CREATE CLUSTERED INDEX CIDX_X1 ON tablename(field1,field2,field3,field4) ON [PRIMARY]
4。删除分区方案和函数。
DROP PARTITION SCHEME [PartitionSchemeName_PS]
GO
DROP PARTITION FUNCTION [PartitionfunctionName_PF]
GO
-
删除虚拟索引
DROP INDEX CIDX_X1 ON tablename
-
添加回聚集索引/主键约束(使用前面提到的生成脚本)。
-
创建分区函数和分区模式(确保ps>pf的元素数。其中ps=pf+2个元素)
-
添加回发布服务器(使用生成的脚本)