/*PARTITIONING EXAMPLE
I am going to use the Employee table in metroalt for this partition
though I am not going to make the partitions in MetroAlt itself,
Rather I will make a new database and a new table and copy the data
from metroAlt into that database.
For the partitions we will use 1995-1999, 2000-2004, 2004-2009, 2010 forward
Our database will need to have five file groups.
Here's the pattern:
Create database PartitionTest
go
Alter database PartitionTest
Add FileGroup Sales2005;
Go
Alter Database PartitionTest
Add file
(
name ='Sales2005',
FileName='C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\SALES2005File.ndf',
Size=5MB,
MaxSize=200MB,
FileGrowth=5mb
)
To filegroup Sales 2005
*/
if exists
(Select name from sys.Databases
where name = 'EmployeePartition')
Begin
Drop Database EmployeePartition
end
Go
-- create the database.
Create database EmployeePartition
go
--add the first file group and file
alter database EmployeePartition
Add Filegroup Employees1995Group
Go
Alter database EmployeePartition
Add File
(name='Employees1995',
Filename='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Employees1995File.mdf',
size=5mb,
MaxSize=200mb,
FileGrowth=5mb
)
to Filegroup Employees1995Group
go
alter database EmployeePartition
Add Filegroup Employees2000Group
Go
Alter database EmployeePartition
Add File
(name='Employees2000',
Filename='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Employees2000File.mdf',
size=5mb,
MaxSize=200mb,
FileGrowth=5mb
)
to filegroup Employees2000Group
go
alter database EmployeePartition
Add Filegroup Employees2005Group
Go
Alter database EmployeePartition
Add File
(name='Employees2005',
Filename='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Employees2005File.mdf',
size=5mb,
MaxSize=200mb,
FileGrowth=5mb
)
To Filegroup Employees2005group
go
alter database EmployeePartition
Add Filegroup Employees2010Group
Go
Alter database EmployeePartition
Add File
(name='Employees2010',
Filename='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Employees2010File.mdf',
size=5mb,
MaxSize=200mb,
FileGrowth=5mb
)
to filegroup Employees2010Group
go
alter database EmployeePartition
Add Filegroup Employees2015Group
Go
Alter database EmployeePartition
Add File
(name='Employees2015',
Filename='C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\Employees2015File.mdf',
size=5mb,
MaxSize=200mb,
FileGrowth=5mb
)
To filegroup Employees2015Group
/*Next we want to create the partion function and
the partition scheme.
*/
Use EmployeePartition
Create Partition Function Fx_Hiredate (date)
As range left
For values('19941231', '19991231','20041231','20091231')
Go
--create the partition schema
Create Partition scheme sch_HireDate
As Partition fx_HireDate
to (Employees1995Group, Employees2000Group, Employees2005Group, Employees2010Group, Employees2015Group)
--now create the table that uses the partition schema
CREATE TABLE [dbo].[Employee](
[EmployeeKey] [int],
[EmployeeLastName] [nvarchar](255),
[EmployeeFirstName] [nvarchar](255),
[EmployeeAddress] [nvarchar](255),
[EmployeeCity] [nvarchar](255),
[EmployeeZipCode] [nchar](5),
[EmployeePhone] [nchar](10),
[EmployeeEmail] [nvarchar](255),
[EmployeeHireDate] [date]
) on sch_HireDate(EmployeeHireDate)
--insert into the table
Insert into Employee(EmployeeKey,
EmployeeLastName,
EmployeeFirstName,
EmployeeAddress,
EmployeeCity,
EmployeeZipCode,
EmployeePhone,
EmployeeEmail,
EmployeeHireDate)
Select EmployeeKey,
EmployeeLastName,
EmployeeFirstName,
EmployeeAddress,
EmployeeCity,
EmployeeZipCode,
EmployeePhone,
EmployeeEmail,
EmployeeHireDate
From MetroAlt.Dbo.Employee
Select * from Employee
--1995-1999
Select * from Employee
where $partition.FX_HireDate(EmployeeHireDate)=2
--2000-2004
Select * from Employee
where $partition.FX_HireDate(EmployeeHireDate)=3
--2005-2009
Select * from Employee
where $partition.FX_HireDate(EmployeeHireDate)=4
--2010-2014
Select * from Employee
where $partition.FX_HireDate(EmployeeHireDate)=5
Sunday, July 3, 2016
Table Partitioning
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment