SQL Server如何进行表分区删除
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍SQL Server如何进行表分区删除,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、引言删除分区又称为合并分区,简单地讲就是将多个分区的数据进行合并。现以表
千家信息网最后更新 2026年10月31日SQL Server如何进行表分区删除
这篇文章主要介绍SQL Server如何进行表分区删除,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
一、引言
删除分区又称为合并分区,简单地讲就是将多个分区的数据进行合并。现以表Sales.SalesOrderHeader作为示例,演示如何进行表分区删除。
重要的事情说三遍:备份数据库!备份数据库!备份数据库!
二、演示
2.1、数据查询
2.1.1、 查看分区元数据
SELECT * FROM SYS.PARTITION_FUNCTIONS --分区函数SELECT * FROM SYS.PARTITION_RANGE_VALUES --分区方案

2.1.2、统计每个分区的数据量
SELECT $PARTITION.SalesOrderHeader_OrderDate(OrderDate) AS NUMBER,COUNT(1) AS COUNTFROM [Sales].[SalesOrderHeader]GROUP BY $PARTITION.SalesOrderHeader_OrderDate(OrderDate)
分区表中有数据时,是不能够删除分区方案和分区函数的,只能将数据先移到其它表中,再删除。
2.2、删除实操
2.2.1、合并原表分区
ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2011-01-01 00:00:00.000')ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2012-01-01 00:00:00.000')ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2013-01-01 00:00:00.000')ALTER PARTITION FUNCTION SalesOrderHeader_OrderDate() MERGE RANGE('2014-01-01 00:00:00.000')2.2.2、备份原表所有索引的创建脚本
ALTER TABLE [Sales].[SalesOrderHeader] ADD CONSTRAINT [PK_SalesOrderHeader_SalesOrderID] PRIMARY KEY NONCLUSTERED ( [SalesOrderID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
2.2.3、删除原表所有索引
ALTER TABLE [Sales].[SalesOrderHeader] DROP CONSTRAINT [PK_SalesOrderHeader_SalesOrderID]
2.2.4、创建临时表
CREATE TABLE [Sales].[SalesOrderHeader_Temp]( [SalesOrderID] [INT] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL, [RevisionNumber] [TINYINT] NOT NULL, [OrderDate] [DATETIME] NOT NULL, [DueDate] [DATETIME] NOT NULL, [ShipDate] [DATETIME] NULL, [Status] [TINYINT] NOT NULL, [OnlineOrderFlag] [dbo].[Flag] NOT NULL, [SalesOrderNumber] AS (ISNULL(N'SO'+CONVERT([NVARCHAR](23),[SalesOrderID]),N'*** ERROR ***')), [PurchaseOrderNumber] [dbo].[OrderNumber] NULL, [AccountNumber] [dbo].[AccountNumber] NULL, [CustomerID] [INT] NOT NULL, [SalesPersonID] [INT] NULL, [TerritoryID] [INT] NULL, [BillToAddressID] [INT] NOT NULL, [ShipToAddressID] [INT] NOT NULL, [ShipMethodID] [INT] NOT NULL, [CreditCardID] [INT] NULL, [CreditCardApprovalCode] [VARCHAR](15) NULL, [CurrencyRateID] [INT] NULL, [SubTotal] [MONEY] NOT NULL, [TaxAmt] [MONEY] NOT NULL, [Freight] [MONEY] NOT NULL, [TotalDue] AS (ISNULL(([SubTotal]+[TaxAmt])+[Freight],(0))), [Comment] [NVARCHAR](128) NULL, [rowguid] [UNIQUEIDENTIFIER] ROWGUIDCOL NOT NULL, [ModifiedDate] [DATETIME] NOT NULL)
2.2.5、更改原表数据空间类型
1)对着原表Sales.SalesOrderHeader点击"右键"->"设计"。

2)点击菜单栏"视图"->"属性窗口"。
3)将数据空间类型更改为"文件组",常规数据空间规范默认为"PRIMARY"。
2.2.6、移动原表分区数据到临时表
ALTER TABLE [Sales].[SalesOrderHeader] SWITCH PARTITION 1 TO [Sales].[SalesOrderHeader_Temp] PARTITION 1
2.2.7、创建原表所有索引 到临时表
ALTER TABLE [Sales].[SalesOrderHeader_Temp] ADD CONSTRAINT [PK_SalesOrderHeader_SalesOrderID] PRIMARY KEY NONCLUSTERED ( [SalesOrderID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
2.2.8、删除原表
DROP TABLE Sales.SalesOrderHeader
2.2.9、删除分区方案和分区函数
DROP PARTITION SCHEME SalesOrderHeader_OrderDateDROP PARTITION FUNCTION SalesOrderHeader_OrderDate
2.2.10重命名表名
EXEC SP_RENAME '[Sales].[SalesOrderHeader_Temp]','SalesOrderHeader'
以上是"SQL Server如何进行表分区删除"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
数据
备份
函数
数据库
方案
空间
索引
内容
篇文章
类型
演示
重要
事情
价值
兴趣
多个
小伙
小伙伴
就是
属性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手冲咖啡和咖啡机区别
互联网科技园
河南云网互联网络科技有限公司
互联网科技卖菜
美国互联网科技
青岛互联网科技公司
互联网科技美容
互联网科技创新企业排名
互联网对科技的发展
互联网公司科技股
哈尔滨屹滨互联网科技有限公司
用友工业互联网科技发展
上海钢联属于互联网科技股吗
银行科技岗属于互联网吗
广东工业互联网大赛深圳学泰科技
江苏互联网科技小贷
上海同邻互联网科技有限公司规模
艺电能源互联网科技有限公司招聘
北京天晋互联网科技有限公司
互联网的黑科技实验室
互联网科技资迅
科技互联网技术
与互联网科技公司
互联网科技股票
火传媒上海互联网科技
深圳市运趣互联网科技有限公司
栖莱科技互联网股份有限公司
互联网科技与管理
西安小鹰速贷互联网科技有限公司
六子台科技互联网展会