当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQLServer 通用的分区增加和删除的算法

MSSQL
查看当前进程,或死锁进程,并能自动杀掉死进程
配置SQL Server 2000选项
使用SQL Mail收发和自动处理邮件中的扩展存储过程简介
如何删除数据库中的冗余数据(翻译)
SQL SERVER 2000系统支持的跟踪函数
异构数据库之间的导入导出
一个四用户信息同步更新的存储过程
Oracle数据库诊断案例-redo log日志组处于高激活状态
如何手动删除 SQL Server 2000 默认实例、命名实例或虚拟实例
ORACLE优化器
PL/SQL开发中动态SQL的使用方法
解决windows 2003+Sql2000中OLEDB分布式事务无法启动的解决方案
使用正规表达式编写更好的SQL
查看SQL Server数据空间分配情况
SQL Server编写存储过程小工具(一)
SQL Server编写存储过程小工具(二)
SQL Server编写存储过程小工具(三)
在IE中直接连接SQL数据库
Sql server数据库备份还原另一方法
Windows 2000下优化Oracle9i性能

MSSQL 中的 SQLServer 通用的分区增加和删除的算法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 135 ::
收藏到网摘: n/a

本算法默认分去函数中已经包含了足够多的分区。不需要我们去动态的创建分区。 首先是将一个数据表加入到分区表的方法:
[dbo].[SP_Helper_Partition_Add]
@SrcTable nvarchar(256), 待加入的表
@DestTable nvarchar(256), 目标表
@idxOnDest nvarchar(1024), 目标表上的索引创建语句
@Partition_func_name nvarchar(256), 分区函数
@PartCol nvarchar(256), 分区的列
@SonIsPart tinyint=1, 待加入的表是否分区
算法如下:
获取到源表的分区列的值;
在源表上加上分区列值的唯一性限制;
然后确定是否有一个分区恰好能存放这个表;如果不存在,则返回;
在源表上创建和目标表一样的索引;
现在源表和目标结构一致,源表的内容能够存在目标分区上,使用alter table switch完成分区;
删除一个分区的算法
[dbo].[SP_Helper_Partition_Delete]
@SrcTable nvarchar(256), 从该表中删除分区
@IdxOnTable nvarchar(1024), 该表上的索引创建语句
@Part_func nvarchar(256), 分区函数名
@PartCol nvarchar(256), 分区列
@PartIndex int, 待删除分区的索引
@IdxIsPart tinyint 索引是否在另一个分区函数上分区
算法如下:
首先根据源表的表结构复制一分临时表的表结构;
获取待删除分区的边界值;
在临时表上创建限制;
在这个表上创建索引;
将指定分区使用alter switch交换到临时表上;
删除临时表