SQL2005 表分区亲测

--增加文件组

alter database Test add filegroup [FG1]

go

alter database Test add filegroup [FG2]

GO

alter database Test add filegroup [FG3]



--增加文件

ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG1', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\TestFG1.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG1]

GO

ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG2', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\TestFG2.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG2]

GO

ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG3', FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\TestFG3.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG3]

GO



--创建分区函数

CREATE PARTITION FUNCTION OrderDateRangePFN(datetime)

AS

RANGE LEFT FOR VALUES ('2012-12-31 23:59:59.997',

            '2013-12-31 23:59:59.997',

            '2014-12-31 23:59:59.997')



--创建分区架构

--创建分区函数后,必须将其与分区架构相关联,以便将分区定向至特定的文件组。

--定义分区架构时,即使多个分区位于同一个文件组中,也必须为每个分区指定一个文件组。

--对于前面创建的范围分区 (OrderDateRangePFN),存在五个分区;最后一个空分区将在 PRIMARY 文件组中创建。

--因为此分区永远不包含数据,所以不需要指定特殊的位置。

CREATE PARTITION SCHEME OrderDatePScheme 

AS

PARTITION OrderDateRangePFN 

TO ([FG1], [FG2], [FG3], [PRIMARY])



--注意:如果所有分区都位于同一个文件组中,则可以使用以下更简单的语法:

/*CREATE PARTITION SCHEME OrderDatePScheme 

AS

PARTITION OrderDateRangePFN 

ALL TO ([PRIMARY])*/

 

--定义分区函数(逻辑结构)和分区架构(物理结构)后,即可创建表来利用它们。表定义应使用的架构,而架构又定义函数。要将这三者结合起来,必须指定应该应用分区函数的列。范围分区始终只映射到表中的一列,此列应与分区函数中定义的边界条件的数据类型相匹配。另外,如果表应明确限制数据集(而不是从负无穷大到正无穷大),则还应添加 CHECK 约束。



create table Orders(ID INT IDENTITY(1,1),DT DATETIME NOT NULL,OrderNo nvarchar(20))

ON  OrderDatePScheme(DT)

 



--ALTER TABLE Orders

--add CONSTRAINT OrdersPK

--PRIMARY KEY  (ID)



insert into Orders(DT,OrderNo)

select '2012-01-01','123' union all 

select '2013-01-01','212' union all 

select '2015-01-01','120' 



--查询

SELECT *

FROM dbo.Orders AS o

WHERE $partition.OrderDateRangePFN(o.DT) IN (4) --1,2,3,4 代表分段





--增加分区

--1)先增加文件组及数据次要文件

--2)更改数据架构

ALTER PARTITION SCHEME OrderDatePScheme 

NEXT USED [FG4]

GO

--更改分区函数,为 2014 年 12 月添加新的边界点。(拆分)

ALTER PARTITION FUNCTION TwoYearDateRangePFN() 

SPLIT RANGE ('2014-12-31 23:59:59.997')

GO



--移动数据到备份表

--创建分区段表

create table Orders2012(ID INT IDENTITY(1,1),DT DATETIME NOT NULL,OrderNo nvarchar(20))

ON FG1



ALTER TABLE Orders

SWITCH PARTITION 1

TO Orders2012

GO



--更改分区函数以删除 2012 年 月的边界点(合并)

ALTER PARTITION FUNCTION OrderDateRangePFN()

MERGE RANGE ('2012-12-31 23:59:59.997')

GO

 

你可能感兴趣的:(sql2005)