给出分区函数(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
答案 0 :(得分:0)
要创建新分区,请将下一个使用的文件组的分区方案设置为所需的分区,然后SPLIT
函数为该文件组上的数据创建新的分区边界。例如:
ALTER PARTITION SCHEME Logs_PartitionScheme NEXT USED [PRIMARY];
ALTER PARTITION FUNCTION MonthlyPartition() SPLIT RANGE('2019-05-01T00:00:00.0000000');