当前位置:Gxlcms > 数据库问题 > SQL Server 2005中的分区表(六):将已分区表转换成普通表

SQL Server 2005中的分区表(六):将已分区表转换成普通表

时间:2021-07-01 10:21:17 帮助过:9人阅读

 
  1. ALTER PARTITION FUNCTION partfunSale()  
  2.     MERGE RANGE (‘20100101‘)  
  3. ALTER PARTITION FUNCTION partfunSale()  
  4.     MERGE RANGE (‘20110101‘)  
  5. ALTER PARTITION FUNCTION partfunSale()  
  6.     MERGE RANGE (‘20120101‘)  
  7. ALTER PARTITION FUNCTION partfunSale()  
  8.     MERGE RANGE (‘20130101‘)  

 

 

    事实上,这么操作之后,表Sale还是一个分区表,如下图所示,只不过是只有一个分区的分区了,这和普遍表就没有什么区别了。

技术分享

 

    对于通过创建分区索引的方法将普通表转换成的分区表而言,除了上面的方法之外,还可以通过删除分区索引的办法来将分区表转换成普通表。但必须要经过以下两个步骤:

    1、删除分区索引

    2、在原来的索引字段上重建一个索引。

 

    先说删除分区索引吧,这一步很简单,你可以直接在SQL Server Management Studio上将分区索引删除,也可以使用SQL语句删除,如本例中可以使用以下代码删除已经创建的分区索引。

 

[c-sharp] view plain copy  
  1. drop index Sale1.CT_Sale1  

 

 

 

    一开始,我还以为只要删除了分区索引,那么分区表就会自动转换成普通表了,可是在删除索引之后,查看一下该表的属性,结果还是已分区表,如下图所示。

技术分享

    不但如此,而且,还不能将原来的聚集的唯一索引(在本例中为主键的那个索引)改成聚集索引,如下图所示。

技术分享

 

    如果要彻底解决这个问题,还必须要在原来创建分区索引的字段上重新创建一下索引,只有重新创建过索引之后,SQL Server才能将已分区表转换成普通表。在本例中可以使用以下代码重新创建索引。

 

 

[c-sharp] view plain copy  
  1. CREATE CLUSTERED INDEX CT_Sale1 ON Sale1([SaleTime])  
  2. ON [PRIMARY]  
  3. Go  

 

 

 

    重建索引之后,分区表就变成了普通表,现在再查看一下Sale1表的属性,我们可以看到原来的分区表已经变成了普通表,如下图所示。

技术分享

 

 

    当然,以上两个步骤也可以合成一步完成,也就是在重建索引的同时,将原索引删除。如以下代码所示:

 

[c-sharp] view plain copy  
  1. CREATE CLUSTERED INDEX CT_Sale1 ON Sale1([SaleTime])  
  2.     WITH ( DROP_EXISTING = ON)  
  3. ON [PRIMARY]  

 

 

 

    按理说,在SQL Server Management Studio中的操作和使用SQL语句的操作是一样的,可是我在SQL Server Management Studio中将聚集索引删除后再在该字段上重新创建一个同名的索引,并重新生成和组织该索引,可是分区表还是没有变成普通表,这就让我百思不得其解了。不过呢,只要能用SQL语句达到目的,那我们就用它吧。

 

 

原创不容易,转载请注明出处。http://blog.csdn.net/smallfools/archive/2009/12/14/5004100.aspx

SQL Server 2005中的分区表(六):将已分区表转换成普通表

标签:arp   语句   drop   函数   targe   使用   copy   nsa   索引   

人气教程排行