如何将分区添加到现有表?

时间:2019-04-16 12:34:50

标签: sql-server tsql partition

给出分区函数(MonthlyPartition(DateTime2)),使用该函数的分区方案(Logs_PartitionScheme)和需要将该分区应用于其Logs的表([DateTime])领域;如何将分区添加到表中?

我尝试过:

ALTER TABLE dbo.Logs
ADD PARTITION Logs_PartitionScheme

但是在运行它时就得到它:

  

列,参数或变量#40:找不到数据类型Logs_PartitionScheme。

我认为这只是想向Logs添加类型为Logs_PartitionScheme的名为“ PARTITION”的列。如果将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

1 个答案:

答案 0 :(得分:0)

要创建新分区,请将下一个使用的文件组的分区方案设置为所需的分区,然后SPLIT函数为该文件组上的数据创建新的分区边界。例如:

ALTER PARTITION SCHEME Logs_PartitionScheme NEXT USED [PRIMARY];
ALTER PARTITION FUNCTION MonthlyPartition() SPLIT RANGE('2019-05-01T00:00:00.0000000');