--增加文件组 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 FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestFG1.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG1] GO ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG2', FILENAME = N'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestFG2.ndf' , SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [FG2] GO ALTER DATABASE [Test] ADD FILE ( NAME = N'TestFG3', FILENAME = N'D:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATATestFG3.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