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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章