Изменить функцию раздела SQL Server? - PullRequest
1 голос
/ 03 ноября 2011

Я создал функцию секционирования на основе DateTime DataType, ниже приведен скрипт для функции секционирования и соответствующая ему схема секционирования.

CREATE PARTITION FUNCTION [VZDArchiveDatePartition](datetime) AS RANGE LEFT FOR VALUES
(N'2011-07-01T00:00:00.000', N'2011-08-01T00:00:00.000', N'2011-09-01T00:00:00.000',
 N'2011-10-01T00:00:00.000', N'2011-11-01T00:00:00.000', N'2011-12-01T00:00:00.000',
 N'2012-01-01T00:00:00.000', N'2012-02-01T00:00:00.000', N'2012-03-01T00:00:00.000',
 N'2012-04-01T00:00:00.000', N'2012-05-01T00:00:00.000', N'2012-06-01T00:00:00.000')
GO

CREATE PARTITION SCHEME [VZDArchivePartitionScheme] AS PARTITION [VZDArchiveDatePartition] TO
([PRIMARY], [JulyFG], [AugFG], [SepFG], [OctFG], [NovFG], [DecFG], [Jan12FG],
 [Feb12FG], [Mar12FG], [Apr12FG], [May12FG], [Jun12FG])
GO

В вышеупомянутой функции разделения я использовал 1 месяц в качестве значения диапазона. Теперь я бы хотел изменить диапазон раздела с месяца на квартал. Пожалуйста, предложите, как изменить существующую функцию, назначенную нескольким таблицам.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2012
-- First merge two months into the third one
ALTER PARTITION FUNCTION VZDArchiveDatePartition() MERGE RANGE (N'2011-08-01T00:00:00.000');
ALTER PARTITION FUNCTION VZDArchiveDatePartition() MERGE RANGE (N'2011-09-01T00:00:00.000');

-- Then shrink the files and delete them
DBCC SHRINKFILE (N'AugFG' , 1) -- Ensure that 0 used, 0 estimated values are returned
DBCC SHRINKFILE (N'SepFG' , 1) -- Ensure that 0 used, 0 estimated values are returned

-- At the end, deleting the files and filegroups used might be an idea
ALTER DATABASE [xxx]  REMOVE FILE      [AugFG]
ALTER DATABASE [xxx]  REMOVE FILEGROUP [AugFG]

ALTER DATABASE [xxx]  REMOVE FILE      [SepFG]
ALTER DATABASE [xxx]  REMOVE FILEGROUP [SepFG]
0 голосов
/ 03 ноября 2011

Вы можете MERGE разделы (см. http://msdn.microsoft.com/en-us/library/ms186307.aspx для пояснения), но, учитывая количество объединяемых разделов и несколько таблиц, вам может быть лучше создать новую схему разделов, а также удалить и заново создать индексы, используяновая схема.

...