将无分区表转换为已分区表(Convert a nonpartitioned table to a partitioned table)

前些天我曾举例说了一下如何给SQL Server 2005数据库进行分区,现在介绍一下如何将现有库的无分区表转换为已分区表。

在SQL Server中,我们可以通过以下两种方式将无分区表转换为已分区表:

一种方式是通过使用 CREATE INDEX 语句对表创建已分区聚集索引。此操作类似于对任一表创建聚集索引,因为 SQL Server 实质上将删除表并以聚集索引格式重新创建该表。如果已经对表应用了某个已分区聚集索引,则可以使用带有 DROP EXISTING = ON 子句的 CREATE INDEX 删除该索引并以某种分区方案重新生成该索引。

例如:如果前文中我们建表时没有指定表PT_Date分区,我们现在可以通过下面的SQL将其转移到Month_Scheme方案中

CREATE CLUSTERED INDEX INDEX_NAME ON PT_Date([Month]) WITH (DROP_EXISTING=ON)
ON [Month_Scheme]([Month])
 
另一种方式是使用 Transact-SQL ALTER TABLE SWITCH 语句将表中的数据切换到只有一个分区的按范围分区的表中。此已分区表在转换发生之前必须已经存在,并且该表的单个分区必须为空。

第二种方法限制多多,而且也不利于已有数据平滑过渡,这里就不把sql语句写出来了。

0 comments:

Post a Comment