Учитывая функцию разделения (MonthlyPartition(DateTime2)
), схему разделения (Logs_PartitionScheme
), использующую эту функцию, и таблицу (Logs
), для которой требуется, чтобы это разделение применялось к своему полю [DateTime]
;как добавить раздел в таблицу?
Я пробовал:
ALTER TABLE dbo.Logs
ADD PARTITION Logs_PartitionScheme
, но просто запустите его при запуске:
Столбец,параметр или переменная # 40: не удается найти тип данных Logs_PartitionScheme.
Я думаю, что это просто попытка добавить столбец с именем "PARTITION" в Logs
с типом Logs_PartitionScheme
.Я также получаю то же самое, если заменить Logs_PartitionScheme
на MonthlyPartition
.
Logs_PartitionScheme выглядит следующим образом:
CREATE PARTITION SCHEME CatLogs_PartitionScheme
AS PARTITION MonthlyPartition
ALL TO ([Primary])
MonthlyPartition выглядит следующим образом:
DECLARE @partitionsTable dbo.VarCharCollectionTableType --User-Defined Table Type to hold a collection of VarChars.
INSERT INTO @partitionsTable
SELECT DISTINCT CONCAT(FORMAT(RY, '0000'), FORMAT(RM, '00'), '01')
FROM dbo.Logs
DECLARE @partitionsString VARCHAR(MAX)
SELECT @partitionsString =
CASE
WHEN @partitionsString IS NULL
THEN CONCAT('''', [Text], '''')
ELSE CONCAT(@partitionsString, ', ''', [Text], '''')
END
FROM @partitionsTable
ORDER BY [Text]
DECLARE @statement NVARCHAR(MAX) =
(
SELECT CONCAT
(
N'CREATE PARTITION FUNCTION MonthlyPartition(DateTime2)
AS RANGE RIGHT FOR VALUES
(',
@partitionsString,
')'
)
)
EXECUTE SP_EXECUTESQL @statement