SQL Server如何进行表分区删除
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要介绍SQL Server如何进行表分区删除,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、引言删除分区又称为合并分区,简单地讲就是将多个分区的数据进行合并。现以表
千家信息网最后更新 2025年02月23日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安全错误
数据库的锁怎样保障安全
建立管理和维护小型数据库
电子软件开发吃香吗
零基础软件开发工作
如何分配服务器硬盘
博客文章保存到数据库
激流勇进数据库有用吗
网络安全家长留言
网络安全电子画报
数据库安全怎么关闭
netmvc怎么连数据库
了解数据库关系运算基本概念
软件开发都计划哪些内容
安排部署网络安全
软件开发标准化 cm
网络安全专业知识教材
学软件开发可以找什么工作
路由器网络技术标准
计算机网络技术维护大全
运满满网络安全审查是什么
执行数据库查询操作时出现错误
神武服务器65级什么时候开始
未转变者私人服务器怎么重置
首届网络安全宣传周是第几届
2019服务器采购
支付宝 数据库设计
渭南初中毕业5g软件开发培训
无线网络安全麽
大数据库系统建立的技术途径
手机服务器地址是什么意思
数据库中什么是默认为空值