我有一个表'X'并做了以下
- 创建分区函数 PF1(INT) 作为值的左侧范围 (1, 2, 3, 4)
- 将分区方案 PS1 创建为分区 PF1 全部到 ([PRIMARY])
- 在 PS1(col1) 上的 X(col1) 上创建集群索引 CIDX_X
这 3 个步骤为我拥有的数据创建了 4 个逻辑分区。
我的问题是,如何将此分区恢复为原始状态?
我有一个表'X'并做了以下
这 3 个步骤为我拥有的数据创建了 4 个逻辑分区。
我的问题是,如何将此分区恢复为原始状态?
经过2天的不断寻找
步骤:
DROP INDEX CIDX_X on X
/* 删除集群 */CREATE CLUSTERED INDEX CIDX_X1 ON X(col1) ON [PRIMARY]
/* 在表上创建另一个聚集索引以将其从分区方案中释放出来;在这里,“ ON [primary] ”部分是从表中删除分区方案的关键!*/DROP PARTITION SCHEME PS1
DROP PARTITION FUNCTION PF1
DROP INDEX CIDX_X1 ON X
/* 删除你创建的虚拟聚集索引,因为它只是为了将表从分区方案中释放出来 */我发现应该在 Storm 给出的答案中添加一些额外的步骤,因为在删除聚集索引之前,有一些点,比如 ... 在删除聚集索引之前,需要删除发布,因为它不允许在此之前删除聚集索引并且在删除那些分区方案和分区功能后需要重新创建,并且也需要再次开始发布。
注意:我使用的是 SQL 2012
主键通常是最常用的集群约束,所以无论我使用主键,请考虑这些步骤也适用于集群约束。此外,PS = 分区方案,PF = 分区函数。
一些准备步骤:
以上所有,在右键单击时使用 SQL Management Studio“生成脚本”。并选择 drop 和 create。
现在,当一切准备就绪。
1. 删除发布(使用您生成的脚本)
2. 删除与 PS 链接的那些表的主键约束。
alter table [tablename] drop constraint [pk_name]
3. 创建一个虚拟约束,但使用您在删除的主键中使用的相同字段。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