我正在一家数据仓库工作,我想把过去三年的数据划分为热数据存储,再过三年就应该放在冷的地方。我希望能够每月运行一个脚本,如果数据变老,我会将数据从热移动到冷,我现在已经在线查看并测试了下面的脚本
Alter Database [Dev_PartionTest] Add Filegroup [HOT_DATA] --------
Go --------
Alter Database [Dev_PartionTest] Add Filegroup [COLD_DATA] --------
Go --------
Alter Database [Dev_PartionTest] Add FILE ( NAME = N'HOT_DATA', FILENAME = N'....\HOT_DATA.ndf' , SIZE = 5120KB , FILEGROWTH = 1024KB, MAXSIZE = 20000MB ) TO Filegroup [HOT_DATA]
Alter Database [Dev_PartionTest] Add FILE ( NAME = N'COLD_DATA', FILENAME = N'..\COLD_DATA.ndf' , SIZE = 5120KB , FILEGROWTH = 1024KB, MAXSIZE = 20000MB) TO Filegroup [COLD_DATA]
Declare @Previousyear Date
set @Previousyear = (SELECT DATEADD(year, -2, GETDATE()));
Create Partition Function [MonthlyPartitionArchive] (datetime)
as Range Right For Values (@Previousyear, GETDATE())
Create Partition Scheme RangePartScheme as Partition
[MonthlyPartitionArchive]
To ([COLD_DATA], [HOT_DATA], [PRIMARY])
Create Clustered Index IDX_Part On Tester(created)
On RangePartScheme (created);你能指导我怎么写这样一个剧本吗?
Create Partition Function [MonthlyPartitionArchive] (datetime)
as Range Right For Values (@Previousyear, GETDATE())我面临的问题是如果我使用getdate插入记录
INSERT INTO Tester( Name, gender, created, description )
VALUES ('Nicks', 'M',GETDATE(), 'Lloyds Office'), getdate函数将返回日期高于上述函数中使用的日期时间,以在create分区函数中设置右侧的上界。如何设置当前年度,而不必每次手动键入它。该脚本是否可以在每月更新分区的进程上运行,这是可能的。
发布于 2018-05-25 22:45:45
你想要的是RANGE LEFT而不是RANGE RIGHT,你只需要在三年内只需要一个单一的边值。
使分区函数如下所示:
Create Partition Function [MonthlyPartitionArchive] (datetime)
as Range LEFT For Values (@Previousyear);然后,该计划应是:
Create Partition Scheme RangePartScheme as Partition [MonthlyPartitionArchive]
To ([COLD_DATA], [HOT_DATA]);无法创建动态分区函数。您将需要安排一个作业来根据需要更改分区函数。有关如何将其自动化的详细信息,请参阅这个答案。
https://dba.stackexchange.com/questions/207904
复制相似问题