随着时间的推移,你可能会希望为已分区的表添加额外的分区(例如,可以为每一个新年创建一个新的分区)。要增加一个新的分区,可以使用ALTER PARTITION SCHEME和ALTER PARTITION FUNCTION命令。

要想为一个既有的分区函数创建新的分区,首先必须准备一个文件组来保存新分区的数据(新的或者已有的文件组都行)。第一步是使用ALTER PARTITION SCHEME来指定下一个分区文件组。

ALTER PARTITION SCHEME的语法如下:

  1. ALTER PARTITION SCHEME partition_scheme_name
  2. NEXT USED [ filegroup_name ]

表4-20详细描述了此命令的参数。

表4-20 ALTER PARTITION SCHEME参数

参数

描述

partition_scheme_name

这个参数指定了需

要修改的分区方案名

NEXT USED

[filegroup_name]

NEXT USED关键字把下一个

文件组列入使用队列,让任何新的分区使用

在增加了下一个文件组的引用之后,使用ALTER PARTITION FUNCTION来创建(分割)新的分区(移除/合并分区也一样)。ALTER PARTITION FUNCTION的语法如下:

  1. ALTER PARTITION FUNCTION partition_function_name()
  2. {
  3. SPLIT RANGE ( boundary_value )
  4. | MERGE RANGE ( boundary_value )
  5. }

表4-21详细描述了此命令的参数。

表4-21 ALTER PARTITION FUNCTION参数

参数

描述

partition_function_name

这个参数指定了要从中

添加或移除分区的分区函数名

SPLIT RANGE ( boundary_value ) |

MERGE RANGE ( boundary_value )

SPLIT RANGE通过定义一

个新的边界值来创建一个

新的分区。MERGE RANGE

用于移除一个既有的分区

这个示例演示如何创建(分割)一个新的分区。第一步就是新建一个为新分区所用的文件组。在本例中,使用PRIMARY文件组:

  1. ALTER PARTITION SCHEME HitDateRangeScheme
  2. NEXT USED [PRIMARY]

接着,修改分区函数来创建新的分区,定义边界为2009年1月1日:

  1. ALTER PARTITION FUNCTION HitDateRange ()
  2. SPLIT RANGE ('1/1/2009')

在新分区创建后,插入一个新行来测试新分区:

  1. INSERT Sales.WebSiteHits
  2. (WebSitePage, HitDate)
  3. VALUES ('Sales Page', '3/4/2009')

使用$PARTITION来查询表:

  1. SELECT   HitDate,
  2. $PARTITION.HitDateRange (HitDate) Partition
  3. FROM Sales.WebSiteHits

这个查询显示新插入的行已经存储到了新的分区中(分区号5):

  1. HitDate                    Partition
  2. 2000-03-04 00:00:00.000    1
  3. 2006-10-02 00:00:00.000    2
  4. 2007-10-22 00:00:00.000    3
  5. 2008-05-09 00:00:00.000    4
  6. 2009-03-04 00:00:00.000    5

解析

在这个技巧的示例中,使用ALTER PARTITION SCHEME和NEXT USED关键字来修改HitDateRange- Scheme。NEXT USED关键字把下一个文件组加入队列,供新的分区使用。默认的PRIMARY文件组被选为新分区的目标存储区:

  1. ALTER PARTITION SCHEME HitDateRangeScheme
  2. NEXT USED [PRIMARY]

然后使用ALTER PARTITION FUNCTION和SPLIT RANGE来加入一个新的分区边界:

  1. ALTER PARTITION FUNCTION HitDateRange ()
  2. SPLIT RANGE ('1/1/2006')

添加新的分区只需要使用一个新值,其实是使用原来的边界类型(LEFT或RIGHT)把一个既有的分区范围分成了2份。一次分离只可以使用一次SPLIT RANGE--不可以在一条语句中增加多个分区。

这个示例的分割增加了一个新的分区#5,如表4-22所示。

表4-22 新的分区布局

位 置 #

最小的时间

最大的时间

1

最小允许的时间

1/1/2006 00:00:00

2

1/1/2006 00:00:01

1/1/2007 00:00:00

3

1/1/2007 00:00:01

1/1/2008 00:00:00

4

1/1/2008 00:00:01

1/1/2009 00:00:00

5

1/1/2009 00:00:01

最大允许的时间

向表Sales.WebSiteHits插入了新的一行,使用了分区函数。然后执行查询来查看每行所属的分区,并确认了新行插入到了第5个分区中。

Sql Server 分区之后增加新的分区的更多相关文章

  1. LVM 管理减少swap分区空间增加到根分区

    简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现 ...

  2. SQL Server 2012 实现分页新语法

    最近一直在看SQL Server的书,不过看的都是基础的查询流,查询在工作中用到的最多,所以能正确地查询出想要的数据也是很重要的嘛. 在书上看到在SQL Server 2012新增了一种实现分页的查询 ...

  3. 本地数据库(sql server)插入一条新数据时,同步到服务器数据库

    之前有个同学问我,本地数据库插入新数据时怎么同步到服务器上,当时我先想到是程序逻辑控制,作相应的处理. 但有时候我们程序不太好处理,那能不能从数据库入手呢,数据库不是有触发器(Trigger)吗,应该 ...

  4. [转]SQL Server 2012 的 T-SQL 新功能 – 新的数据分析函数(LEAD、LAG)

    当您需要在 SQL Server 中利用 T-SQL 比较结果集的每一列跟前一列或后一列的差异时,在过去可能需要利用 CURSOR 搭配临时表变量,或是透过递归 CTE 来达到这个效果,如今 SQL ...

  5. 如何在Win7电脑上增加新磁盘分区?

    原文链接: https://www.cnblogs.com/haoxitong/p/9405497.html 我们在重装好系统Win7系统后有时会碰到需要新建磁盘分区的情况,这时我们再重装系统进行磁盘 ...

  6. ArcGIS Server 缓存服务增加新比例尺缓存

    win10 + Server 10.4 +  ArcMap 10.4  操作简单说明: ①窗口上方Customize栏→Toolbars→ Customize→ 搜索到 manege map serv ...

  7. SQL Server CONVERT() 日期转换为新数据类型的 通用函数

    http://www.w3school.com.cn/sql/func_convert.asp

  8. sql server 判断及增加列的默认值约束

    IF NOT EXISTS ( SELECT name FROM sysobjects WHERE id = ( SELECT syscolumns.cdefault FROM sysobjects ...

  9. SQL Server 2017命令创建新账户(test-user),并分配数据库权限

    -- 1. 创建登录账号USE [master];GOCREATE LOGIN [test-user] WITH PASSWORD = 'xysu7SZ193SNX6E{{HxubPE3}vr',DE ...

随机推荐

  1. jQuery学习笔记(在js中增加、删除及定位控件的操作)

    代码内容很多都是从amazeui直接copy过来的,先声明,请不要说在下抄袭- - <!-------------------- HTML代码 ----------------------> ...

  2. Tomcat的相关配置

    一.Tomcat背景 自从JSP发布之后,推出了各式各样的JSP引擎.Apache Group在完成GNUJSP1.0的开发以后,开始考虑在SUN的JSWDK基础上开发一个可以直接提供Web服务的JS ...

  3. Java web--Filter过滤器分IP统计访问次数

    分IP统计访问次数即网站统计每个IP地址访问本网站的次数. 分析 因为一个网站可能有多个页面,无论哪个页面被访问,都要统计访问次数,所以使用过滤器最为方便. 因为需要分IP统计,所以可以在过滤器中创建 ...

  4. Mysql binlog

    理解Mysql binlog 日志的三种模式   本文介绍下,mysql中binlog日志的三种模式,了解了各种模式的不同之处,才能更好地应用.有需要的朋友建议参考下.   一,模式1 Row Lev ...

  5. 前端资源构建-Grunt环境搭建

    前端资源构建-Grunt 随着前端开发的复杂度越来越高,前端页面动辄上几十个js,十几个html页面.用户打开一个页面需要加载一堆的css,js,html文件,对于有大量用户的web应用来说,既消耗服 ...

  6. golang的channel使用

    chan使用前必须用make来创建,可以有多个槽位 0个槽位相当于消息,1个槽位相当于锁,多个槽位就是读者-写者 go func

  7. smbclient提示NT_STATUS_INSUFFICIENT_RESOURCES

    Rhel6中使用smbclient命令打开windows共享文件夹,出现: Linux Samba protocol negotiation failed: NT_STATUS_INSUFFICIEN ...

  8. MediaBrowserService 音乐播放项目

    MediaBrowserService 音乐播放项目,本项目主要有如下功能: (1):支持播放在线音乐 (2):按住home键退出页面后显示通知栏部分播放提示,  (3) : 支持切换上下首歌曲 本项 ...

  9. CRM域用户误删恢复

    记录一下: 不小心将CRM用户在域中删除了(CRM中未删除),直接新建一个同样账号的域用户然后尝试在CRM中登录报“invalid user”错误,一番检查发现从2011版本开始CRM中不单记录了用户 ...

  10. 展开、收起div的jQuery代码

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...