SQL Server去掉表分区存储

本文通过8个步骤详细介绍了如何在SQL Server中删除分区,即合并分区的过程,包括查询分区数据、备份表信息、创建临时表、更改数据空间类型、移动数据、删除原表及分区方案等操作。

删除分区又称为合并分区,简单地讲就是将多个分区的数据进行合并。现以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

第八步:重命名表名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Trouble-Solver

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值