SQL Server数据库表删除分区

在 SQL Server 中删除分区并将表恢复到非分区状态,需按以下步骤操作:

一、合并所有分区

1. 检查现有分区结构

首先确认表的分区方案和分区函数:

-- 查看分区方案
SELECT * FROM sys.partition_schemes;-- 查看分区函数
SELECT * FROM sys.partition_functions;

2. 合并所有分区

将所有分区合并为一个,使数据集中在单个分区中:

-- 假设分区函数名为 `pf_DateRange`,边界值为 `20230101`
ALTER PARTITION FUNCTION pf_DateRange()
MERGE RANGE ('20230101'); -- 重复执行直到只剩一个分区ALTER PARTITION FUNCTION pf_DateRange()
MERGE RANGE ('20240101'); -- 重复执行直到只剩一个分区
3. 验证合并结果

合并后应只剩一个分区:

SELECT p.partition_number,rows = SUM(rows)
FROM sys.partitions p
WHERE p.object_id = OBJECT_ID('dbo.YourTable')
GROUP BY p.partition_number;

二、解除表与分区的关联

1. 处理聚集索引

如果表有 聚集索引,需将其重建到非分区文件组(如 PRIMARY):

-- 假设聚集索引名为 PK_YourTable
ALTER INDEX PK_YourTable ON dbo.YourTable
REBUILD WITH (DROP_EXISTING = ON,ONLINE = ON,        -- 在线操作减少锁(企业版支持)PARTITION = ALL TO ([PRIMARY])  -- 指定目标文件组
);
2. 处理非聚集索引

所有非聚集索引也需解除分区依赖:

ALTER INDEX IX_YourNonClusteredIndex ON dbo.YourTable
REBUILD WITH (ONLINE = ON);  -- 自动继承表的文件组
3. 无聚集索引的表

如果表是堆表(无聚集索引),需手动创建临时索引解除分区:

-- 创建临时聚集索引
CREATE CLUSTERED INDEX IX_Temp ON dbo.YourTable (YourKeyColumn)
ON [PRIMARY];  -- 指定目标文件组-- 删除临时索引
DROP INDEX IX_Temp ON dbo.YourTable;

三、删除分区方案和函数

确保所有对象已解除依赖后,删除分区方案和函数:

-- 删除分区方案
DROP PARTITION SCHEME ps_YourPartitionScheme;-- 删除分区函数
DROP PARTITION FUNCTION pf_YourPartitionFunction;

执行到此处,有可能分区方案和分区函数,无法删除。此时,需要查看是否有以下依赖:

1. 检查未合并的分区

即使执行了 MERGE RANGE,若仍有未合并的分区边界值,会导致分区函数无法删除。

验证方法
-- 查看分区函数是否仍有边界值
SELECT pf.name AS PartitionFunction,prv.value AS BoundaryValue
FROM sys.partition_range_values prv
JOIN sys.partition_functions pf ON prv.function_id = pf.function_id
WHERE pf.name = 'pf_YourPartitionFunction';
  • 预期结果:无任何记录(所有边界值已合并)。

  • 解决方法
    如果仍有边界值,需继续执行 MERGE RANGE 直到所有边界值被合并。

2. 检查分区依赖对象

若表、索引或其他数据库对象仍依赖分区方案或函数,将无法删除。

验证方法
-- 检查是否有对象依赖分区方案或函数
SELECT OBJECT_NAME(referencing_id) AS DependentObject,referenced_entity_name AS PartitionObject
FROM sys.sql_expression_dependencies
WHERE referenced_entity_name IN ('ps_YourPartitionScheme', 'pf_YourPartitionFunction');
  • 预期结果:无任何记录。

  • 解决方法

    • 表或索引依赖:确保所有表的索引已从分区方案迁移到普通文件组(参考步骤三)。

    • 统计信息或计算列:检查是否有统计信息或计算列引用了分区函数,手动删除。

3. 检查索引是否完全解除分区

若表的索引(包括非聚集索引)仍绑定到分区方案,会导致删除失败。

验证方法
-- 查看索引是否仍关联分区方案
SELECT i.name AS IndexName,ps.name AS PartitionScheme
FROM sys.indexes i
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id
WHERE i.object_id = OBJECT_ID('dbo.YourTable');
  • 预期结果:所有索引的 PartitionScheme 列为 NULL

  • 解决方法
    若存在索引仍关联分区方案,需重新执行索引重建:

    -- 重建索引到非分区文件组(如 PRIMARY)
    ALTER INDEX [YourIndexName] ON dbo.YourTable
    REBUILD WITH (ONLINE = ON, DATA_COMPRESSION = NONE ON [PRIMARY]);

4. 检查堆表(Heap)的分区依赖

如果表是堆表(无聚集索引),且未创建临时聚集索引解除分区,会导致分区方案仍被引用。

解决方法
CREATE CLUSTERED INDEX IX_Temp ON dbo.YourTable (YourColumn) 
WITH (DATA_COMPRESSION = NONE) ON [PRIMARY];-- 删除临时索引
DROP INDEX IX_Temp ON dbo.YourTable;

5. 检查权限问题

确保当前用户具有删除分区方案和函数的权限。

验证方法
  • 执行删除操作的用户需要以下权限:

    • ALTER 权限(针对分区函数和方案)。

    • CONTROL 或 ALTER 权限(针对表和索引)。

  • 可通过以下命令检查权限:

-- 检查用户权限
EXECUTE AS USER = 'YourUserName';
SELECT HAS_PERMS_BY_NAME('pf_YourPartitionFunction', 'OBJECT', 'ALTER');
SELECT HAS_PERMS_BY_NAME('ps_YourPartitionScheme', 'OBJECT', 'ALTER');
REVERT;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息安全和病毒防护——安全协议关于SSL和TLS协议的补充说明

文章目录 SSL与TLS的关系SSL与TLS的核心区别SSL/TLS的典型应用安全建议总结SSL与TLS的关系 SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)是同一技术体系的演进版本,而非完全独立的协议。其发展历程如下: SSL 1.0(1994):未公开…

[原创](Modern C++)现代C++的关键性概念: 多维数组的下标引用.

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …

从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.3实战案例:在笔记本电脑上运行轻量级LLM

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 实战案例:在笔记本电脑上运行轻量级LLM2.2.3 模型架构设计与实现1. 环境与工具准备1.1 硬件要求1.2 软件栈选择2. 轻量级模型架构设计2.1 模型参数配置2.2 关键技术优化3. 实战流程3.1 数据准备流程3.2…

工业软件的破局与重构:从技术依赖到自主创新的未来路径

工业软件作为现代工业的“神经与大脑”,不仅是制造业数字化转型的核心工具,更是国家工业竞争力的战略制高点。近年来,中国工业软件市场在政策驱动与技术迭代中迅猛发展,但核心技术受制于人的困境仍待突破。如何实现从“跟跑”到“…

歌曲缓存相关功能

1. 核心组件 MusicCacheManager (音乐缓存管理器) 单例模式:确保全局只有一个实例,方便管理。 private static var instance: MusicCacheManager?static func shared() -> MusicCacheManager {if instance nil {instance MusicCacheManager()}ret…

解决 Ubuntu/Debian 中 `apt-get` 报错 “无法获得锁 /var/lib/dpkg/lock“

问题描述 在 Ubuntu/Debian 系统中运行 sudo apt-get install 或 sudo apt update 时,遇到以下错误: E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它&#…

阿里开源的免费数据集成工具——DataX

企业里真实的数据流转是什么样子的呢? 左侧描述了一个企业真实的样子,我们总是需要把数据从一个地方搬到另一个地方,最后就是搬来搬去搬成了一张张解不开的网。 右侧则表达了使用DataX为中心实现数据的同步。 什么是DataX DataX是一个异构…

26考研——图_图的遍历(6)

408答疑 文章目录 三、图的遍历图的遍历概述图的遍历算法的重要性图的遍历与树的遍历的区别图的遍历过程中的注意事项避免重复访问遍历算法的分类遍历结果的不唯一性 广度优先搜索广度优先搜索(BFS)概述BFS 的特点广度优先遍历的过程示例图遍历过程 BFS …

前端解决方案:实现网页截图并导出PDF功能

前端解决方案:实现网页截图并导出PDF功能 在前端开发中,我们经常会遇到需要将网页内容导出为PDF的需求。本文将以一个准考证预览和导出的例子,带你一步步实现这个功能。我们会处理包括跨域图片、Canvas绘图、PDF生成等多个技术要点。 一、基…

【MySQL】表操作

表操作 一、创建表 1、语句2、语句介绍3、注意事项4、介绍5、示例 二、查看表结构 1、语句2、介绍3、返回的信息4、示例 三、添加字段 1、语句2、语句介绍3、示例 四、修改 1、语句2、语句介绍3、示例 五、删除 1、语句2、示例 六、修改表名 1、语句2、语句介绍3、示例 七、删…

[新闻.AI]国产大模型新突破:阿里开源 Qwen2.5-VL-32B 与 DeepSeek 升级 V3 模型

(本文借助 Deepseek-R1 协助生成) 在2025年3月24日至25日的短短24小时内,中国AI领域迎来两大重磅开源更新:阿里通义千问团队发布多模态大模型Qwen2.5-VL-32B-Instruct,而DeepSeek则推出编程能力大幅提升的DeepSeek-V3…

深入剖析C# List<T>的底层实现与性能奥秘

一、动态数组的本质:List的架构设计 在C#的集合类型体系中,List作为最常用的线性数据结构,其核心实现基于动态数组机制。与传统数组不同,List通过智能的容量管理策略,在保持数组高速随机访问优势的同时,突…

【单元测试】

一、框架 不同的编程语言有不同的测试框架,以下是一些常见的测试框架: 1)Java:JUnit、TestNG2)Python:unittest、pytest3)JavaScript:Jest、Mocha4)C#:NUni…

机器学习——XGBoost

XGBoost(极度梯度提升树,eXtreme Gradient Boosting)是基于GBDT的优化模型,其最大特性在于对GBDT的损失函数展开到二阶导数,使得其梯度提升树模型更接近其真实损失 其XGBoost分类树拟合和预测方法的基本思路为: 遍历所有的树&…

响应“一机两用”政策 ,实现政务外网安全

在数字化办公的浪潮下,企业与政务机构面临着既要保障数据安全,又要高效访问互联网的双重需求。“一机两用”成为解决这一难题的关键。 政策驱动,需求迫切 随着《网络安全法》《数据安全法》等法律法规的相继出台,网络安全防护的要…

【后端】【Django】Django DRF API 单元测试完整方案(基于 `TestCase`)

Django DRF API 单元测试完整方案(基于 TestCase) 一、方案概述 使用 django.test.TestCase 和 rest_framework.test.APIClient 进行 API 单元测试,确保 API 正确性、权限控制、数据返回格式、业务逻辑 等。 二、基本步骤 使用 setUp() 初始…

文生图语义识别插件使用(controlnet)

1. 插件下载(github) https://github.com/Mikubill/sd-webui-controlnet https://github.com/lllyasviel/ControlNet2. 模型下载(hugging face) https://github.com/Mikubill/sd-webui-controlnet/wiki/Model-download https://huggingface.co/bdsqlsz/qinglong_controlnet-l…

学者观察 | web3.0产业发展与技术融合——北京大学研究员肖臻

导语 肖臻老师认为在未来很长一段时间内,Web 3.0将和现在的Web 2.0共存。Web 3.0和人工智能(AI)的融合发展前景非常广阔,Web 3.0致力于打造去中心化的互联网生态系统,赋予用户更大的数据所有权和控制权,而…

【模型压缩+推理加速】知识蒸馏综述解读

知识蒸馏综述解读 论文: https://arxiv.org/abs/2006.05525 最近Deepseek R1的技术报告中,训练部分提到使用了知识蒸馏,就像系统性的看看蒸馏算法的原理。看了很多的博客,很多都没有详细把知识蒸馏系统的讲清楚。我们还是读一下…

vivo 湖仓架构的性能提升之旅

作者:郭小龙 vivo互联网 大数据高级研发工程师 导读:本文整理自 vivo互联网 大数据高级研发工程师 郭小龙 在 StarRocks 年度峰会上的分享,聚焦 vivo 大数据多维分析面临的挑战、StarRocks 落地方案及应用收益。 在 即席分析 场景&#xff0c…