• thanks for your interest. See my notes down below where it blows up...

    ALTER DATABASE edw ADD FILEGROUP [201001]

    ALTER DATABASE edw ADD FILEGROUP [201002]

    ALTER DATABASE edw ADD FILEGROUP [201003]

    ALTER DATABASE edw ADD FILEGROUP [201004]

    ALTER DATABASE edw ADD FILEGROUP [201005]

    ALTER DATABASE edw ADD FILEGROUP [201006]

    ALTER DATABASE edw ADD FILEGROUP [201007]

    ALTER DATABASE edw ADD FILEGROUP [201008]

    ALTER DATABASE edw ADD FILEGROUP [201009]

    ALTER DATABASE edw ADD FILEGROUP [201010]

    ALTER DATABASE edw ADD FILEGROUP [201011]

    ALTER DATABASE edw ADD FILEGROUP [201012]

    -- Add files to the filegroups

    /*

    ALTER DATABASE edw

    ADD FILE

    (NAME = '2009',

    FILENAME = 'G:\mssql\data\2009.ndf',

    SIZE = 100000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [2009]

    */

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201001',

    FILENAME = 'H:\mssql\data\201001.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201001]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201002',

    FILENAME = 'H:\mssql\data\201002.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201002]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201003',

    FILENAME = 'H:\mssql\data\201003.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201003]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201004',

    FILENAME = 'H:\mssql\data\201004.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201004]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201005',

    FILENAME = 'H:\mssql\data\201005.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201005]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201006',

    FILENAME = 'H:\mssql\data\201006.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201006]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201007',

    FILENAME = 'H:\mssql\data\201007.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201007]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201008',

    FILENAME = 'H:\mssql\data\201008.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201008]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201009',

    FILENAME = 'H:\mssql\data\201009.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201009]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201010',

    FILENAME = 'H:\mssql\data\201010.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201010]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201011',

    FILENAME = 'H:\mssql\data\201011.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201011]

    ALTER DATABASE edw

    ADD FILE

    (NAME = '201012',

    FILENAME = 'H:\mssql\data\201012.ndf',

    SIZE = 65000MB,

    MAXSIZE='UNLIMITED',

    FILEGROWTH = 100MB)

    TO FILEGROUP [201012]

    CREATE PARTITION FUNCTION dispense_date_pfn(date)

    AS

    RANGE RIGHT FOR VALUES ('20100201','20100301','20100401','20100501','20100601','20100701','20100801','20100901','20101001','20101101','20101201', '20110101')

    -- Create partition scheme

    CREATE PARTITION SCHEME dispense_date_pscheme

    AS

    PARTITION dispense_date_pfn

    TO ([201001],[201002],[201003],[201004],[201005], [201006], [201007], [201008], [201009], [201010], [201011], [201012], [PRIMARY])

    CREATE TABLE [dbo].[fill_fact]

    (

    time_key int not null,

    chain_key int not null,

    patient_key int not null,

    pharmacy_key int not null,

    drug_key int not null,

    dispense_date date not null

    )

    ON dispense_date_pscheme (dispense_date)

    --And here is my sliding window manipulation script:

    ALTER DATABASE edw ADD FILEGROUP [201101]

    ALTER DATABASE edw ADD FILE (NAME = '201101', FILENAME = 'H:\mssql\data\201101.ndf',

    SIZE = 65000MB, MAXSIZE='UNLIMITED', FILEGROWTH = 100MB) TO FILEGROUP [201101]

    CREATE TABLE [dbo].[fill_fact_add]

    ( time_key int not null,

    chain_key int not null,

    patient_key int not null,

    pharmacy_key int not null,

    drug_key int not null,

    dispense_date date not null,

    --greater than 20110101

    CONSTRAINT dispense_date_add_chk_con

    CHECK ([dispense_date] >= '20110101')

    ) ON [201101]

    CREATE TABLE [dbo].[fill_fact_drop]

    ( time_key int not null,

    chain_key int not null,

    patient_key int not null,

    pharmacy_key int not null,

    drug_key int not null,

    dispense_date date not null

    )

    ON [201001]

    ALTER TABLE fill_fact SWITCH PARTITION 1 to fill_fact_drop

    ALTER PARTITION FUNCTION dispense_date_pfn() MERGE RANGE('20100201')

    ALTER PARTITION SCHEME dispense_date_pscheme NEXT USED [201101]

    ALTER PARTITION FUNCTION dispense_date_pfn() SPLIT RANGE ('20110201')

    /*this next step is where it chokes, because partition 12 was not created on 201101, but on Primary.

    partition 13 was created on Filegroup 201101. This is where it confuses me, because when I split the range (added the 20110201 boundary), I think it should have split Primary (the empty end partition 13), and inserted the new partition on 201101 in as partition 12. Is this not correct? */

    ALTER TABLE fill_fact_add SWITCH TO fill_fact PARTITION 12

    DROP TABLE fill_fact_drop

    DROP TABLE fill_fact_add

    ALTER DATABASE edw REMOVE FILE [201001]

    ALTER DATABASE edw REMOVE FILEGROUP [201001]