--增加文件組 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