1
0
mirror of https://github.com/alex-bochkov/ssms-addin.git synced 2025-11-23 22:04:53 +02:00
Files
ssms-addin/QueryTemplates/Common Scripts/manual-partitioning.sql
2019-06-04 15:00:03 -07:00

46 lines
1.6 KiB
Transact-SQL

CREATE PARTITION FUNCTION [pf_TABLENAME](datetime) AS RANGE RIGHT FOR VALUES (N'2016-10-01T00:00:00.000')
GO
ALTER DATABASE [DATABASENAME] ADD FILEGROUP [FG_TABLENAME20161001]
GO
ALTER DATABASE [DATABASENAME] ADD FILE ( NAME = N'F_TABLENAME20161001', FILENAME = N'X:\Databases\DATABASENAME\F_TABLENAME20161001.ndf', SIZE = 8MB, FILEGROWTH = 512MB ) TO FILEGROUP [FG_TABLENAME20161001]
GO
CREATE PARTITION SCHEME [ps_TABLENAME] AS PARTITION [pf_TABLENAME] TO ([PRIMARY], [FG_TABLENAME20161001])
GO
CREATE TABLE [dbo].[TABLENAME](
[id] [BIGINT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
...
[createDateTime] [datetime] NOT NULL,
CONSTRAINT [PK_TABLENAME] PRIMARY KEY CLUSTERED ([id], [createDateTime])
) ON pf_TABLENAME([createDateTime])
GO
DECLARE @Date date = '20160101', @DateString varchar(10) = '', @Cmd nvarchar(max) = '';
 
WHILE @Date < '20210101'
BEGIN
 
SET @DateString = FORMAT(@Date, 'yyyyMMdd')
 
SET @Cmd = '
ALTER DATABASE [DATABASENAME] ADD FILEGROUP [FG_TABLENAME' + @DateString + ']
ALTER DATABASE [DATABASENAME] ADD FILE (NAME = ''F_TABLENAME' + @DateString + ''',
FILENAME = ''X:\Databases\DATABASENAME\F_TABLENAME' + @DateString + '.ndf'',
SIZE = 8MB,
MAXSIZE = UNLIMITED, FILEGROWTH = 128MB)
TO FILEGROUP [FG_TABLENAME' + @DateString + ']
 
ALTER PARTITION SCHEME [ps_TABLENAME] NEXT USED [FG_TABLENAME' + @DateString + ']
 
ALTER PARTITION FUNCTION [pf_TABLENAME]() split RANGE (''' + @DateString + ''')
'
PRINT '******************************************'
PRINT @CMD
EXEC (@cmd)
 
SET @Date = DATEADD(month, 1, @DAte)
 
END