if exists (select * from sys.databases where name = 'test_1')drop database test_1go
create database test_1 on primary( NAME = N'test_1', FILENAME = N'g:/sqltest/fenqv/test_1.mdf' , SIZE = 10240KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),filegroup [test_a](name = N'test_a',filename= N'g:/sqltest/fenqv/test_a.ndf',size = 1024kb,maxsize = unlimited,filegrowth = 1024kb),filegroup [test_b](name = N'test_b',filename = N'g:/sqltest/fenqv/test_b.ndf',size = 1024kb,maxsize = unlimited,filegrowth=1024kb)log on(name = N'test_log',filename = N'g:/sqltest/fenqv/test_log.ldf',size = 5000kb,maxsize = 5gb,filegrowth=10%)
USE test_1GO
--检查是否存在分区函数 在则删除if exists(select * from sys.partition_functions where name = N'test_partition')drop partition function [test_partition]go
--创建分区函数create partition function test_partition(int)asrange left for values(1000)go
/**//*看分区方案是否存在,若存在先drop掉*/if exists (select * from sys.partition_schemes where name = N'test_scheme')drop partition scheme test_schemego
--创建分区方案,分区方案需要指定一个分区函数,并指定在分区函数中分的区需要放在哪一个文件组上create partition SCHEME test_schemeaspartition test_partition to (test_a,test_b)go
--创建分区表if exists (select * from sys.objects where name = N'student')drop table studentgo
create table student( id int identity(1,1) not null, name varchar(10) not null, class int not null, grade int)on test_scheme(class)
--随便插入几条数据insert into student values ('AQU',10,100); -- 这条数据在A分区上insert into student values ('AQU_边界',1000,89); -- 这边数据也在A分区上是个边界,因为我们上面在函数中指定的是RANGE LEFT,所以1000在A分区上insert into student values ('BQU',1001,90); -- 这一条肯定是在B分区上了。
--最后看看结果。$partition.分区函数(分区列)可以返回某一行所在的分区序号select *,分区序号 = $partition.test_partition(class) from studentGO
以上代码直接复制过去,查询编辑器了,直接执行即可