概念就不多说了,网上大把.  

--分区函数的作用是告诉SQL Server,如何将数据进行分区,例如按时间,按年龄,按省.

--而分区方案的作用则是告诉SQL Server,将已分区的数据放在哪个文件组中. 多个硬盘上分开选择的文件组更好. 

一,用语句

创建,分区方案:

   
   
   
   
  1. CREATE PARTITION SCHEME YearCustomerFollow AS PARTITION  
  2. YearCustomerFollowFunction TO([PRIMARY],[PRIMARY],[PRIMARY],[PRIMARY],[PRIMARY]) 

创建,分区函数:

   
   
   
   
  1. CREATE PARTITION FUNCTION YearCustomerFollowFunction(datetime) 
  2.  AS RANGE RIGHT FOR VALUES('20100101','20110101','20120101','20130101')  

删除一个分区:

   
   
   
   
  1. ALTER PARTITION FUNCTION YearCustomerFollowFunction() MERGE RANGE ('20100101')   

添加一个分区:

   
   
   
   
  1. ALTER PARTITION SCHEME YearCustomerFollow NEXT USED [PRIMARY]     -- 分区方案   
  2. ALTER PARTITION FUNCTION YearCustomerFollowFunction() SPLIT RANGE ('20090101')  -- 分界值  

创建分区:(这里的语句可以用向导生成更方便)

   
   
   
   
  1. USE [SQL_ZZW] 
  2. GO 
  3. BEGIN TRANSACTION 
  4. CREATE CLUSTERED INDEX [ClusteredIndex_on_YearCustomerFollow_01] ON [dbo].[ZZW_test]  
  5.     [birthyday] 
  6. )WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFFON [YearCustomerFollow]([birthyday]) 
  7.  
  8.  
  9. DROP INDEX [ClusteredIndex_on_YearCustomerFollow_01] ON [dbo].[ZZW_test] WITH ( ONLINE = OFF ) 

 查询分区表行数.

   
   
   
   
  1. select $PARTITION.YearCustomerFollowFunction(birthyday) as 分区编号,count(id) as 记录数  
  2. from zzw_test  
  3. group by $PARTITION.YearCustomerFollowFunction(birthyday)   

二,用向导

1,在要修改的表上右键->存储->创建分区.

MSSQL2008分区表_第1张图片

2,选择分区列.

MSSQL2008分区表_第2张图片

3,创建分区函数或选择以后的分区函数.

MSSQL2008分区表_第3张图片

4,创建分区方案或选择现有分区方案.

MSSQL2008分区表_第4张图片

5,映射分区,先设置边界.

MSSQL2008分区表_第5张图片

6,可以看到边界值都一下子已经设置好了.

MSSQL2008分区表_第6张图片

7,创建完成.

MSSQL2008分区表_第7张图片

MSSQL2008分区表_第8张图片

查看:表右键->存储-管理压缩.可以看到各分区的行数,空间.

MSSQL2008分区表_第9张图片

在控制台库->存储下可以直接看到刚创建的分区方案和分区函数.

MSSQL2008分区表_第10张图片