-- ============================================= -- Author: 余波(杭州) -- Create date: 2011/09/15 -- Description: 分区表创建基础 -- ============================================= -- 分区表创建的基本步骤是 -- 1、创建文件组 -- 2、在文件组上新增文件,只有有文件的文件组才能创建分区方案 -- 3、创建分区函数 partition function -- 4、创建分区方案 -- 5、创建分区使用方案的表 ------------------创建文件组--------------------- alter database start add filegroup f1 ----创建名为f1的文件组 alter database start add filegroup f2 ----创建名为f2的文件组 alter database start add filegroup f3 ----创建名为f3的文件组 alter database start add filegroup f4 ----创建名为f4的文件组 ----------------在文件组上新增文件---------------- alter database start add file ( name=af1, filename='c:\a_f1.ndf', size=1MB ) to filegroup f1 GO alter database start add file ( name=af2, filename='c:\a_f2.ndf', size=1MB ) to filegroup f2 GO alter database start add file ( name=af3, filename='c:\a_f3.ndf', size=1MB ) to filegroup f3 GO alter database start add file ( name=af4, filename='c:\a_f4.ndf', size=1MB ) to filegroup f4 go ----------------创建分区函数---------------------- create partition function p_test(datetime) as range left for values('2001-01-02','2003-01-01','2005-01-01') -----四个分区,left表示三个分割点属于左边区间 ----------------创建分区方案---------------------- create partition scheme s_test as partition p_test to (f1,f2,f3,f4) ---------------创建分区方案表--------------------- create table t_test ( s_id int not null identity(1,1), s_page varchar(100) not null, s_date datetime not null, constraint pk_s primary key(s_date) ----------分区列必须是聚集索引列 ) on [s_test](s_date) --------------查看当前的数据在哪个分区中------------ insert into t_test(s_page,s_date) select '1','2000-02-01' union select '1','2001-02-01' union select '1','2003-02-01' union select '1','2006-02-01' select s_date,$partition.p_test(s_date) as partition from t_test /* 结果 s_date partition 2000-02-01 00:00:00.000 1 2001-02-01 00:00:00.000 2 2003-02-01 00:00:00.000 3 2006-02-01 00:00:00.000 4 */ -------------增加新的分区----------------------------- ---增加新的分区你可以将的分区加到新的文件组里面(也可以是使用过的) alter partition scheme s_test -----先为分区方案分配文件组 next used [f1] alter partition function p_test() ------新增分割点 split range('2004-01-01') insert into t_test(s_page,s_date) select '1','2004-02-01' select s_date,$partition.p_test(s_date) as partition from t_test /*结果 s_date partition 2000-02-01 00:00:00.000 1 2001-02-01 00:00:00.000 2 2003-02-01 00:00:00.000 3 2004-02-01 00:00:00.000 4 2006-02-01 00:00:00.000 5 */ --------------合并/删除分割点----------------- alter partition function p_test() merge range('2004-01-01') select s_date,$partition.p_test(s_date) as partition from t_test /*结果 s_date partition 2000-02-01 00:00:00.000 1 2001-02-01 00:00:00.000 2 2003-02-01 00:00:00.000 3 2004-02-01 00:00:00.000 3 2006-02-01 00:00:00.000 4 */
注:不管是合并分区或者新增分区,一次只能操作一个分区,不能多个分区同时合并或新增