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 = '
USE [DATABASENAME];
GO
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