Sql server 2008 r2 在中拆分主分区

Sql server 2008 r2 在中拆分主分区,sql-server-2008-r2,data-warehouse,partitioning,Sql Server 2008 R2,Data Warehouse,Partitioning,在一个表上,我根据2008年以后的数据创建了一个分区 我创建了以下分区2008、2009、2010和主分区。 因为主分区有2011年和2012年的数据,所以我想拆分主分区 ALTER PARTITION SCHEME [PartScheme] NEXT USED [FG2011] GO ALTER PARTITION FUNCTION PartFunction() split Range (20111231) GO 我为2011年创建了一个新的文件组。我运行了拆分主分区的脚本 ALTER PA

在一个表上,我根据2008年以后的数据创建了一个分区 我创建了以下分区2008、2009、2010和主分区。 因为主分区有2011年和2012年的数据,所以我想拆分主分区

ALTER PARTITION SCHEME [PartScheme] NEXT USED [FG2011]
GO
ALTER PARTITION FUNCTION PartFunction() split Range (20111231)
GO
我为2011年创建了一个新的文件组。我运行了拆分主分区的脚本

ALTER PARTITION SCHEME [PartScheme] NEXT USED [FG2011]
GO
ALTER PARTITION FUNCTION PartFunction() split Range (20111231)
GO
在此之后,主分区将被拆分,但2011年的数据在主分区中,而2011年的数据在主分区中

partition_number    FileGroupName    value
1                    FG2008        20081231
2                    FG2009        20091231
3                    FG2010        20101231
4                    PRIMARY       20111231
5                    FG2011          NULL

我希望当前年份(即2012年)的分区处于主分区中。如何做到这一点?

以下是作业的脚本:

alter partition function PF_MyFunction()  MERGE RANGE (20111231)
alter partition scheme PS_Myfunction next used [FG2011]
alter partition function PF_MyFunction()  SPLIT RANGE (20111231)
下面是一个脚本,用于检查分区是否位于不同的FG上。前后运行它

SELECT 
     schema_name(c.schema_id)   [Schema_Name]
    ,object_name(a.object_id)   [Table_Name]
    ,a.name                     [Index_Name]
    ,a.type_desc                [Index_Type]
    ,d.Partition_Number         [Partition_Number]
    ,b.name                     [Logical_DataSpace Name or PS name]
    ,b.data_space_id            [Logical_DataSpaceID_PS_ID]
    ,f.name                     [Partition Function]
    ,f.function_id              [Partition Function ID]
    ,g.value                    [Partition Boundary Value]
    ,ISNULL (h.data_space_id, b.data_space_id) 
                                [Physiscal DataSpace ID]
    ,i.name                     [FileGroup Name]
    ,i.type_desc                [Physical Dataspace desc]

FROM (sys.indexes a inner join sys.tables c 
    on a.object_id = c.object_id) 
INNER JOIN sys.data_spaces b on a.data_space_id = b.data_space_id
INNER JOIN sys.partitions d on d.object_id = a.object_id
LEFT JOIN sys.partition_schemes e on e.data_space_id = b.data_space_id
LEFT JOIN sys.partition_functions f on f.function_id = e.function_id
LEFT JOIN sys.partition_range_values g on g.function_id = f.function_id and g.boundary_id = d.partition_number

LEFT JOIN sys.destination_data_spaces h 
            on h.partition_scheme_id  = e.data_space_id AND h.destination_id = d.partition_number

INNER JOIN sys.data_spaces i on i.data_space_id = isnull (h.data_space_id, b.data_space_id)

WHERE c.name = 'MyTable'

分区函数是用“左范围”还是“右范围”创建的?另外,您用来生成结果集的查询是什么…它使用“范围右”,并且关于获取结果集的查询是好的,这就是为什么我能够显示结果,但在这里,我认为当我们使用范围“左”或“右”时,关于文件组的结果是不同的你能用你为得到你发布的结果集而运行的查询更新你的帖子吗?