删除分区又称为合并分区,简单地讲就是将多个分区的数据进行合并。现以ri_msg作为示例,演示如何进行表分区删除。
第一步:查询分区数据
SELECT * FROM SYS.PARTITION_FUNCTIONS --分区函数
SELECT * FROM SYS.PARTITION_RANGE_VALUES --分区方案

第二步:合并原表分区
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-01-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-02-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-03-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-04-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-05-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-06-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-07-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-08-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-09-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-10-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-11-01 00:00:00.000')
ALTER PARTITION FUNCTION msgpart() MERGE RANGE('2020-12-01 00:00:00.000')
第三步:备份原表创建信息,并删除索引信息
选中数据库表右击鼠标==》编写脚本为==》CRETE 到==》新查询编辑窗口
USE [cloud_ri]
GO
/****** Object: Table [dbo].[ri_msg] Script Date: 2023-06-13 16:19:42 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ri_msg](
[pkgno] [varchar](50) NOT NULL,
[devicecd] [varchar](30) NULL,
[collecttm] [datetime] NOT NULL,
[systemtm] [datetime] NULL,
[channelid] [varchar](30) NULL,
[cmdcd] [varchar](4) NULL,
[pactcd] [varchar](2) NULL,
[inserttm] [datetime] NULL,
[message] [varchar](max) NULL,
[connect] [varchar](10) NULL,
CONSTRAINT [PK_ri_msg] PRIMARY KEY NONCLUSTERED
(
[pkgno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
)
GO
ALTER TABLE ri_msg DROP CONSTRAINT [PK_ri_msg] //删除索引
第四步:创建临时表
CREATE TABLE [dbo].[ri_msg1](
[pkgno] [varchar](50) NOT NULL,
[devicecd] [varchar](30) NULL,
[collecttm] [datetime] NOT NULL,
[systemtm] [datetime] NULL,
[channelid] [varchar](30) NULL,
[cmdcd] [varchar](4) NULL,
[pactcd] [varchar](2) NULL,
[inserttm] [datetime] NULL,
[message] [varchar](max) NULL,
[connect] [varchar](10) NULL
)
第五步:更改原表数据空间类型
对着原表ri_msg点击"右键"->"设计",然后点击菜单栏"视图"->"属性窗口"。
将数据空间类型更改为"文件组",常规数据空间规范默认为"PRIMARY"。


第六步:将表移动到临时表ri_msg1中,创建原表所有索引到临时表
ALTER TABLE ri_msg SWITCH PARTITION 1 TO ri_msg1 PARTITION 1 //表移动
//添加索引
ALTER TABLE ri_msg1 ADD CONSTRAINT
[PK_ri_msg] PRIMARY KEY NONCLUSTERED
(
[pkgno] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
第七步:删除原表,删除分区方案和分区函数
DROP TABLE ri_msg //删除表
DROP PARTITION SCHEME msgpartsch
DROP PARTITION FUNCTION msgpart
本文通过8个步骤详细介绍了如何在SQL Server中删除分区,即合并分区的过程,包括查询分区数据、备份表信息、创建临时表、更改数据空间类型、移动数据、删除原表及分区方案等操作。
7

被折叠的 条评论
为什么被折叠?



