Разделение основного раздела в
В таблице я создал раздел на основе года. У меня есть данные, начиная с 2008 года. Я создал следующие разделы: 2008, 2009, 2010 и Primary. Так как первичный имеет данные за 2011 и 2012 годы, я хочу разделить первичный раздел
Я создал новую файловую группу на 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, был в Первичном. Как это может быть сделано?
1 ответ
Вот скрипт для работы:
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'