iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQL Server表分区删除详情
  • 554
分享到

SQL Server表分区删除详情

2024-04-02 19:04:59 554人浏览 安东尼
摘要

目录一、引言二、演示2.1、数据查询2.1.1、 查看分区元数据2.1.2、统计每个分区的数据量2.2、删除实操2.2.1、合并原表分区2.2.2、备份原表所有索引的创建脚本2.2.

一、引言

删除分区又称为合并分区,简单地讲就是将多个分区的数据进行合并。现以表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 COUNT
FROM [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_OrderDate
DROP PARTITION FUNCTION SalesOrderHeader_OrderDate

2.2.10重命名表名


EXEC SP_RENAME '[Sales].[SalesOrderHeader_Temp]','SalesOrderHeader'

到此这篇关于SQL Server表分区删除详情的文章就介绍到这了,更多相关sql Server表分区删除内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SQL Server表分区删除详情

本文链接: https://www.lsjlt.com/news/154578.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL Server表分区删除详情
    目录一、引言二、演示2.1、数据查询2.1.1、 查看分区元数据2.1.2、统计每个分区的数据量2.2、删除实操2.2.1、合并原表分区2.2.2、备份原表所有索引的创建脚本2.2....
    99+
    2024-04-02
  • SQL Server临时表的正确删除方式(sql server 删除临时表)
    目录SQL Server临时表的正确删除方式1、错误的删除操作:2、正确的删除方式:补充:SQL临时表的使用示例删除临时表SQL Server临时表的正确删除方式 临时表与一般的表不同,它是保存到tempDb表中。临时表...
    99+
    2023-02-16
    sql删除临时表 sql临时表使用
  • sql如何删除分区表的分区数据
    要删除分区表的分区数据,可以使用以下SQL语句: ALTER TABLE table_name DROP PARTITION par...
    99+
    2024-04-09
    sql
  • SQL Server 数据库分区分表(水平分表)详细步骤
    目录1、 需求说明2、实现思路2.1分区原理2.2 水平分区优点2.3 实现思路3、实现步骤 3.1代码创建分区表3.1.1  创建...
    99+
    2024-04-02
  • SQL Server 触发器详情
    目录1、什么是触发器2、 DML触发器分为2.1 after触发器(之后触发)2.2 instead of 触发器 (之前触发)3、 创建触发器3.1 创建insert类型...
    99+
    2024-04-02
  • SQL Server中怎么彻底删除注册表
    今天就跟大家聊聊有关SQL Server中怎么彻底删除注册表,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.彻底删除SQL Server: hke...
    99+
    2024-04-02
  • sqlserver表分区如何删除
    要删除SQL Server表的分区,可以使用以下步骤: 首先,确定要删除的表名和分区方案名。 使用ALTER TABLE语句,将表...
    99+
    2024-04-20
    sqlserver
  • SQL server 2005怎么实现表分区
    本篇内容介绍了“SQL server 2005怎么实现表分区”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • sql server中怎么查找并删除临时表
    sql server中怎么查找并删除临时表,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。if exists(select * f...
    99+
    2024-04-02
  • SQL Server如何删除表中的重复数据
    本篇内容介绍了“SQL Server如何删除表中的重复数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!添加示例数据create&...
    99+
    2023-06-30
  • oracle怎么批量删除分区表的分区
    在Oracle中,可以使用以下步骤来批量删除分区表的分区: 首先,连接到数据库并登录到sys用户或具有适当权限的用户。 使用...
    99+
    2024-04-20
    oracle
  • SQL Server数据库分区分表的示例分析
    这篇文章主要介绍SQL Server数据库分区分表的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、 需求说明将数据库Demo中的表按照日期字段进行水平分区分表。要求数据文件按一年一个文件存储,且...
    99+
    2023-06-14
  • mysql如何删除分区表数据
    要删除分区表的数据,可以使用以下语法: DELETE FROM table_name PARTITION (partitio...
    99+
    2024-04-15
    MySQL
  • oracle怎么批量删除表分区
    在Oracle中,可以使用以下步骤来批量删除表分区: 创建一个存储过程来循环删除表的分区。以下是一个示例存储过程: CREATE...
    99+
    2024-04-09
    oracle
  • Sql Server中怎么删除数据表中重复记录
    这篇文章将为大家详细讲解有关Sql Server中怎么删除数据表中重复记录,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、生成一张临时表new_users...
    99+
    2024-04-02
  • SQL Server中怎么删除重复行
    今天就跟大家聊聊有关SQL Server中怎么删除重复行,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1.如果有ID字段,就是具有唯一性的字段复制代...
    99+
    2024-04-02
  • sql server中怎么实现自动分批删除数据
    这篇文章给大家介绍sql server中怎么实现自动分批删除数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。博主做过比较多项目的archive脚本编写,对于这种删除数据的脚本开发,肯...
    99+
    2024-04-02
  • Pandas中DataFrame数据删除详情
    目录1.根据默认的行列索引操作1.1行删除1.2列删除2.根据自定义的行列索引操作2.1行删除2.2列删除 本文介绍Pandas中DataFrame数据删除,主要使用drop、del...
    99+
    2024-04-02
  • MySQL分库分表详情
    一、业务场景介绍 假设目前有一个电商系统使用的是MySQL,要设计大数据量存储、高并发、高性能可扩展的方案,数据库中有用户表。用户会非常多,并且要实现高扩展性,你会怎么去设计? OK...
    99+
    2024-04-02
  • SQL Server中怎么删除重复数据
    这篇文章将为大家详细讲解有关SQL Server中怎么删除重复数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。方法一复制代码 代码如下: declare...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作