您的位置:首页 > 数据库

sql 分区代码

2011-02-26 00:07 260 查看
 if exists (select * from sys.databases where name = 'test_1')
drop database test_1
go

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_1
GO

--检查是否存在分区函数 在则删除
if exists(select * from sys.partition_functions where name = N'test_partition')
drop partition function [test_partition]
go

--创建分区函数
create partition function test_partition(int)
as
range left for values(1000)
go

/**//*看分区方案是否存在,若存在先drop掉*/
if exists (select * from sys.partition_schemes where name = N'test_scheme')
drop partition scheme test_scheme
go

--创建分区方案,分区方案需要指定一个分区函数,并指定在分区函数中分的区需要放在哪一个文件组上
create partition SCHEME test_scheme
as
partition test_partition to (test_a,test_b)
go

--创建分区表
if exists (select * from sys.objects where name = N'student')
drop table student
go

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 student
GO

 

 

以上代码直接复制过去,查询编辑器了,直接执行即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息