电子商务网站规划原则,小米发布会在哪看,重庆信息网招聘,dw做框架网站在前面我们介绍过如何创建和使用一个分区表#xff0c;并举了一个例子#xff0c;将不 同年份的数据放在不同的物理分区表里。具体的分区方式为#xff1a; 第1个小表#xff1a;2010-1-1以前的数据#xff08;不包含2010-1-1#xff09;。 第2个小表#xff1a;2010-1-…在前面我们介绍过如何创建和使用一个分区表并举了一个例子将不 同年份的数据放在不同的物理分区表里。具体的分区方式为 第1个小表2010-1-1以前的数据不包含2010-1-1。 第2个小表2010-1-1包含2010-1-1到2010-12-31之间的数据。 第3个小表2011-1-1包含2011-1-1到2011-12-31之间的数据。 第4个小表2012-1-1包含2012-1-1到2012-12-31之间的数据。 第5个小表2013-1-1包含2013-1-1之后的数据。 分区函数的代码如下所示 [c-sharp] view plaincopyprint? CREATE PARTITION FUNCTION partfunSale (datetime) AS RANGE RIGHT FOR VALUES (20100101,20110101,20120101,20130101) CREATE PARTITION FUNCTION partfunSale (datetime) AS RANGE RIGHT FOR VALUES (20100101,20110101,20120101,20130101) 假设我们在创建分区表之后发现2010年以前的数据并不多完全可以将它们与2010年的数据进行合并放在同一个分区里也就是说具体的分区方式改为 第1个小表2011-1-1以前的数据不包含2011-1-1。 第2个小表2011-1-1包含2011-1-1到2011-12-31之间的数据。 第3个小表2012-1-1包含2012-1-1到2012-12-31之间的数据。 第4个小表2013-1-1包含2013-1-1之后的数据。 由于上面的需求更改了数据分区的条件因此我们必须要修改分区函数因为分区函数的作用就是要来告诉SQL Server怎么存放数据的。只要分区函数修改了SQL Server会自动将数据重新分配按照新的分区函数指定的方式来存储数据。 先假设我们还没有创建过分区表要满足上面的条件我们必须要写出如下代码的创建分区函数的SQL语句 [c-sharp] view plaincopyprint? CREATE PARTITION FUNCTION partfunSale (datetime) AS RANGE RIGHT FOR VALUES (20110101,20120101,20130101) CREATE PARTITION FUNCTION partfunSale (datetime) AS RANGE RIGHT FOR VALUES (20110101,20120101,20130101) 比较一个新的分区函数和老的分区函数看看他们有什么区别 的确我们很容易就可以发现老的分区函数里多了一个分界值——也就是20100101。那么修改老的分区函数事实上就是将这分界值删除。简单一点说删除合并一个分区事实上就是在分区函数中将多余的分界值删除。 删除分区函数中的分界值也就是修改分区函数的方法如下所示 [c-sharp] view plaincopyprint? ALTER PARTITION FUNCTION partfunSale() MERGE RANGE (20100101) ALTER PARTITION FUNCTION partfunSale() MERGE RANGE (20100101) 其中 1、ALTER PARTITION FUNCTION 意思是修改分区函数 2、partfunSale()为分区函数名 3、MERGE RANGE意思是合并界限。事实上合并界限和删除分界值是一个意思。 我们可以在修改分区函数时先统计一下各物理分区中的记录总数在修改分区之后再统计一下各物理分区中的记录总数看一下修改分区函数后的数据变化情况代码如下所示 [c-sharp] view plaincopyprint? --统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime) --原来的分区函数是将2010-1-1之前的数据放在第1个分区表中将2010-1-1至2011-1-1之间的数据放在第2个分区表中 --现在需要将2011-1-1之前的数据都放在第1个分区表中也就是将第1个分区表和第2个分区表中的数据合并 --修改分区函数 ALTER PARTITION FUNCTION partfunSale() MERGE RANGE (20100101) --统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime) --统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime) --原来的分区函数是将2010-1-1之前的数据放在第1个分区表中将2010-1-1至2011-1-1之间的数据放在第2个分区表中 --现在需要将2011-1-1之前的数据都放在第1个分区表中也就是将第1个分区表和第2个分区表中的数据合并 --修改分区函数 ALTER PARTITION FUNCTION partfunSale() MERGE RANGE (20100101) --统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime) 运行结果如下图所示 现在还有一个问题就是通过修改分区函数合并数据之后数据都存放在哪里了在修改之前数据分别存放在文件组Sale2009和Sale2010中修改之后数据放到哪里去了呢 事实上在修改分区函数之后SQL Server也会自动修改分区方案将处于两个物理分区中的数据放在同一个物理分区里了。可以通过查看分区方案的方式来查看数据具体的存放位置。 查看分区方案的方式为在SQL Server Management Studio中选择数据库--存储--分区方案右击分区方案名在弹出的菜单中选择“编写分区方案脚本为”--CREATE到--新查询编辑器窗口 然后在新查询编辑器窗口可以看到下图代码。 从上图中可以看出分区方案将原来Sale2010文件组中的数据合并到了Sale2009文件组中。 原创不容易转载请注明出处。http://blog.csdn.net/smallfools/archive/2009/12/04/4937878.aspx 相关链接 SQL Server 2005中的分区表一什么是分区表为什么要用分区表如何创建分区表 SQL Server 2005中的分区表二如何添加、查询、修改分区表中的数据 SQL Server 2005中的分区表三将普通表转换成分区表 SQL Server 2005中的分区表四删除合并一个分区 SQL Server 2005中的分区表五添加一个分区 SQL Server 2005中的分区表六将已分区表转换成普通表转载于:https://www.cnblogs.com/alianhot/archive/2012/03/21/2409243.html