SQL SERVER 2005 分区的基本操作

1.创建数据库 [UserDB]

2.添加文件组到数据库


ALTER DATABASE UserDB ADD FILEGROUP SecondFG;ALTER DATABASE UserDB ADD FILE(NAME='f2',FILENAME='D:/Microsoft SQL Server/Data/userdb2.ndf') TO FILEGROUP SecondFG

如果不想使用多文件组,可以不用加文件组,全部使用[primary]文件组。


3.创建分区函数,分区函数是属于数据库的

CREATE PARTITION FUNCTION [AgePF](int) AS RANGE LEFT FOR VALUES (30,40)



以上创建了一个名为 AgePF 的分区函数,输入参数数据类型为 int,函数的分隔点分别是 30 和 40。
用的 LEFT 关键字,指示分界值存在于他左边的分区上 。分界值可以有 999 个,即最多支持 1000 个分区。


4.创建分区方案


CREATE PARTITION SCHEME [AgePS] AS PARTITION [AgePF] TO ([PRIMARY], [SecondFG],[PRIMARY])

以上使用分区函数 TempPF 创建了一个名为 AgePS 的分区方案,一个分区函数可以创建多个分区方案。
分区方案中指定第一个分区使用 [Primary] 文件组存储数据,第二个分区使用 SecondFG 存储数据,第三个分区使用 [Primary] 文件组存储数据。


5.创建基于分区方案的数据表

CREATE TABLE [UserInfo]([id] [int] IDENTITY(1,1) NOT NULL,[Name] [nvarchar](20) NOT NULL,[Sex] [bit] NOT NULL,[Age] [int] NOT NULL,[Tel] [varchar](32) NULL,[Email] [nvarchar](50) NOT NULL) ON [AgePS]([Age])

以上使用分区方案 AgePS 以 [Age] 列为分区列创建了一个数据表。
创建完数据表就可以插入数据了。

6.查看每分区的记录数


SELECT COUNT(*) AS 数量,$PARTITION.AgePF(Age) AS 分区 FROM UserInfo GROUP BY $PARTITION.AgePF(Age)

7.查看记录所在分区

SELECT AGE,$PARTITION.AgePF(Age) AS 分区 FROM UserInfo

8.修改分区方案

其实修改分区方案与修改分区函数一般同时执行。当增加分区时要指定分区方案中新分区的文件组,按如下语句:

ALTER PARTITION SCHEME [AgePS] NEXT USED [primary]

上句指定了当拆分出新分区时,使用 [primary] 文件组,当然这个可以随意指定数据库包括的文件组,也可以再新加入一个文件组来用。

9.修改分区函数:增加分区

ALTER PARTITION FUNCTION AgePF() SPLIT RANGE(20)

在分区方案或分区函数上点右键,创建分区函数或分区方案的create脚本就可以看到:
CREATE PARTITION FUNCTION [AgePF](int) AS RANGE LEFT FOR VALUES (20, 30, 40)CREATE PARTITION SCHEME [AgePS] AS PARTITION [AgePF] TO ([PRIMARY], [PRIMARY], [SecondFG], [PRIMARY])


或在有数据的情况下用6、7两步里的脚本查看。

以上增加了一个分区,即加了一个分界值,分界值所在的分区为新分区(使用 next used 指定的文件组), 每次执行增加分区的操作都要在基于此分区函数的分区方案上执行 next used 的操作。

10.修改分区函数:合并分区

ALTER PARTITION FUNCTION AgePF() MERGE RANGE(30)

以上删除分界值 30 ,包含 30 值的分区上的数据将被转移到 30 值相邻的分区上,然后在分区方案中删除包含30 值这个分区所对应的文件组。
在分区方案或分区函数上点右键,创建分区函数或分区方案的create脚本就可以看到:
CREATE PARTITION SCHEME [AgePS] AS PARTITION [AgePF] TO ([PRIMARY], [SecondFG], [PRIMARY])CREATE PARTITION FUNCTION [AgePF](int) AS RANGE LEFT FOR VALUES (20, 40)


或在有数据的情况下用6、7两步里的脚本查看记录所在分区或每分区的记录数量。

---------------------------------------------------------------------------------------

---生成分区脚本 
DECLARE @DataBaseName NVARCHAR(50)--数据库名称 
DECLARE @TableName NVARCHAR(50)--表名称
DECLARE @ColumnName NVARCHAR(50)--字段名称 
DECLARE @PartNumber INT--需要分多少个区 
DECLARE @Location NVARCHAR(50)--保存分区文件的路径 
DECLARE @Size NVARCHAR(50)--分区初始化大小 
DECLARE @FileGrowth NVARCHAR(50)--分区文件增量 
DECLARE @FunValue INT--分区分段值 
DECLARE @i INT 
DECLARE @PartNumberStr NVARCHAR(50) 
DECLARE @sql NVARCHAR(max)
 
--设置下面变量 
SET @DataBaseName = 'MyDataBase' 
SET @TableName = 'User' 
SET @ColumnName = 'Id' 
SET @PartNumber = 4 
SET @Location = 'E:\DataBase\' 
SET @Size = '30MB' 
SET @FileGrowth = '10%' 
SET @FunValue = 10000000 
 
--1.创建文件组 
SET @i = 1 
PRINT '--1.创建文件组' 
WHILE @i <= @PartNumber 
BEGIN
    SET @PartNumberStr = RIGHT('0' + CONVERT(NVARCHAR,@i),2) 
    SET @sql = 'ALTER DATABASE ['+@DataBaseName +'] ADD FILEGROUP [FG_'+@TableName+'_'+@ColumnName+'_'+@PartNumberStr+']' 
    PRINT @sql --+ CHAR(13) 
    SET @i=@i+1 
END
 
--2.创建文件 
SET @i = 1 
PRINT CHAR(13)+'--2.创建文件' 
WHILE @i <= @PartNumber 
BEGIN 
    SET @PartNumberStr = RIGHT('0' + CONVERT(NVARCHAR,@i),2) 
    SET @sql = 'ALTER DATABASE ['+@DataBaseName +'] 
ADD FILE 
(NAME = = = , FILEGROWTH = )
TO FILEGROUP [FG_'+@TableName+'_'+@ColumnName+'_'+@PartNumberStr+'];' 
    PRINT @sql + CHAR(13) 
    SET @i=@i+1 
END
 
--3.创建分区函数 
PRINT CHAR(13)+'--3.创建分区函数' 
DECLARE @FunValueStr NVARCHAR(MAX) 
SET @i = 1 
SET @FunValueStr = '' 
WHILE @i < @PartNumber 
BEGIN 
    SET @FunValueStr = @FunValueStr + convert(NVARCHAR(50),(@i*@FunValue)) + ',' 
    SET @i=@i+1 
END
 
SET @FunValueStr = substring(@FunValueStr,1,len(@FunValueStr)-1) 
SET @sql = 'CREATE PARTITION FUNCTION 
) AS 
RANGE RIGHT 
FOR VALUES(
PRINT @sql + CHAR(13)
 
--4.创建分区方案 
PRINT CHAR(13)+'--4.创建分区方案' 
DECLARE @FileGroupStr NVARCHAR(MAX) 
SET @i = 1 
SET @FileGroupStr = '' 
WHILE @i <= @PartNumber 
BEGIN 
    SET @PartNumberStr = RIGHT('0' + CONVERT(NVARCHAR,@i),2)
    SET @FileGroupStr = @FileGroupStr +'[FG_'+@TableName+'_'+@ColumnName+'_'+@PartNumberStr+'],' 
    SET @i=@i+1 
END
 
SET @FileGroupStr = substring(@FileGroupStr,1,len(@FileGroupStr)-1) 
SET @sql = 'CREATE PARTITION SCHEME 
AS 
PARTITION 
TO(
 
PRINT @sql + CHAR(13)
 
--5.分区函数的记录数 
PRINT CHAR(13)+'--5.分区函数的记录数' 
SET @sql = 'SELECT ) AS Partition_num, 
 MIN() AS Min_value,MAX() AS Max_value,COUNT(1) AS Record_num 
FROM 
GROUP BY ) 
ORDER BY 
PRINT @sql + CHAR(13)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值