在SQL Server中对表进行分区管理时,必定涉及到文件与文件组,关于文件与文件组如何创建在网上资料很多,我博客里也有两篇相关转载文件,可以看看,我这就不再细述,这里主要讲几个一般网上很少讲到的东西,但有时候却很重要。

前面内容主要摘自SQL的联机帮助:

  1、一个文件或文件组不能由多个数据库使用。例如,任何其他数据库都不能使用包含 sales 数据库中的数据和对象的文件 sales.mdf 和 sales.ndf

  2、一个文件只能是一个文件组的成员。

  3、一个文件组可以包含多个文件,一个数据表在创建时可以指定要将数据放在那一个文件组上,而没有办法指定是要放在哪一个文件上,文件组对组内的所有文件都使用按比例填充策略。

  4、事务日志文件不能属于任何文件组。

使用文件和文件组时的一些一般建议:

  • 大多数数据库在只有单个数据文件和单个事务日志文件的情况下性能良好。

  • 如果使用多个文件,请为附加文件创建第二个文件组,并将其设置为默认文件组。这样,主文件将只包含系统表和对象。

  • 若要使性能最大化,请在尽可能多的不同的可用本地物理磁盘上创建文件或文件组。将争夺空间最激烈的对象置于不同的文件组中。

  • 使用文件组将对象放置在特定的物理磁盘上。

  • 将在同一联接查询中使用的不同表置于不同的文件组中。由于采用并行磁盘 I/O 对联接数据进行搜索,所以性能将得以改善。

  • 将最常访问的表和属于这些表的非聚集索引置于不同的文件组中。如果文件位于不同的物理磁盘上,由于采用并行 I/O,所以性能将得以改善。

  • 请勿将事务日志文件置于其中已有其他文件和文件组的物理磁盘上。

文件组对组内的所有文件都使用按比例填充策略的解析:

当数据写入文件组时,SQL Server 数据库引擎按文件中的可用空间比例将数据写入文件组中的每个文件,而不是将所有数据都写入第一个文件直至其变满为止。然后再写入下一个文件。例如,如果文件 f1 有 100 MB 可用空间,文件 f2 有 200 MB 可用空间,则从文件 f1 中分配一个区,从文件 f2 中分配两个区,依此类推。这样,两个文件几乎同时填满,并且可获得简单的条带化。

假定将数据库设置为自动增长,则当文件组中的所有文件填满后,数据库引擎便会采用循环方式一次自动扩展一个文件以容纳更多数据。例如,某个文件组由三个文件组成,它们都设置为自动增长。当文件组中所有文件的空间都已用完时,只扩展第一个文件。当第一个文件已满,无法再向文件组中写入更多数据时,将扩展第二个文件。当第二个文件已满,无法再向文件组中写入更多数据时,将扩展第三个文件。当第三个文件已满,无法再向文件组中写入更多数据时,将再次扩展第一个文件,依此类推

自己实践过程摸索的内容:

  文件与文件组的删除,如果因为以前的分区方案不合理,需要取消分区,或者按另外一种方式分区,就需要涉及到文件与文件组的删除操作,如果没有掌握正确步骤,有时候可能无法删除,会提示你“文件不为空,无法删除”或者“文件组不为空,不能删除”等等,如果不知道技巧,会很郁闷!本人就曾经经历过这样的郁闷!在百度也没找到正确答案,下面说说我自己经过摸索后得到的答案。

    1、 文件的删除:首先要先清空文件里的数据,删除之前数据一定要记得先备份,可将数据复制到其他表,然后执行:

DBCC SHRINKFILE (FileName, EMPTYFILE);

文件中的内容删除后,再执行删除文件命令,DataBaseName表示数据名,FileName 表示文件名:

ALTER DATABASE [DataBaseName] REMOVE FILE FileName;

   2、文件组的删除:

当文件组的文件被删除后,按正常理解,应该就可以直接删除文件组,实际是不行的,你无法删除文件组。

因为还有几个东西依赖文件组,一是分区方案,二是使用该分区方案的分区表。

所以要删除分区方案才能删除文件组。但要删除分区方案之前要先更改依赖它的分区表,使其不依赖它。

这个主要是更改分区表的分区列,使其不使用分区方案,如果实在不会更改,在表里数据已经备份的前提下,可以直接删除表来解决。

  然后再删除分区表方案,最后就可以直接删除文件组了。

总结前面的删除过程:

1、修改分区表,使其不依赖分区方案。

 2、删除分区方案(依赖要删除的文件组)。

DROP PARTITION SCHEME [Part_func_scheme_Name]

 3、直接删除文件组。

ALTER DATABASE [DataBaseName] REMOVE FILEGROUP [FGName]

DataBaseName表示数据名,FGName 表示文件组名。

关于SQL Server中分区表的文件与文件组的删除(转)的更多相关文章

  1. [转] C#实现在Sql Server中存储和读取Word文件 (Not Correct Modified)

    出处 C#实现在Sql Server中存储和读取Word文件 要实现在Sql Server中实现将文件读写Word文件,需要在要存取的表中添加Image类型的列,示例表结构为: CREATE TABL ...

  2. [转载]在SQL Server 中,如何实现DBF文件和SQL Server表之间的导入或者导出?

    原来使用SQL Server 2000数据库,通过DTS工具很方便地在SQL Server和DBF文件之间进行数据的导入和导出,现在安装了SQL Server2005之后,发现其提供的“SQL Ser ...

  3. sql server 中后缀为.mdf的文件是干什么用的??

    在微软的SQL Server 2000 数据库有三种类型的文件: 1)主要数据文件(扩展名.mdf是 primary data file 的缩写) 主要数据文件包含数据库的启动信息,并指向数据库中的其 ...

  4. SQL Server中2008及以上 ldf 文件过大的解决方法

    在SQL Server中经常遇到事务日志变大的情况,除了将数据库设置为“自动收缩”外,还可以使用下面的SQL命令进行快速清除数据库中的事务日志,命令如下:  - 第一步:清空日志  ALTER DAT ...

  5. SQL Server 中创建数据库、更改主文件组示例

    以下示例在 SQL Server 实例上创建了一个数据库.该数据库包括一个主数据文件.一个用户定义文件组和一个日志文件.主数据文件在主文件组中,而用户定义文件组包含两个次要数据文件.ALTER DAT ...

  6. (转)理解SQL SERVER中的分区表

    简介 分区表是在SQL SERVER2005之后的版本引入的特性.这个特性允许把逻辑上的一个表在物理上分为很多部分.而对于SQL SERVER2005之前版本,所谓的分区表仅仅是分布式视图,也就是多个 ...

  7. 理解SQL SERVER中的分区表(转)

    简介 分区表是在SQL SERVER2005之后的版本引入的特性.这个特性允许把逻辑上的一个表在物理上分为很多部分.而对于SQL SERVER2005之前版本,所谓的分区表仅仅是分布式视图,也就是多个 ...

  8. 理解SQL SERVER中的分区表

    转自:http://www.cnblogs.com/sienpower/archive/2011/12/31/2308741.html 简介 分区表是在SQL SERVER2005之后的版本引入的特性 ...

  9. T-SQL 理解SQL SERVER中的分区表(转)

    转载来源一定要明显:  http://www.cnblogs.com/CareySon/archive/2011/12/30/2307766.html 而且这个大神对于数据库方面的文章非常棒 强烈推荐 ...

随机推荐

  1. android-exploitme(二):安装apk熟悉测试环境

    今天我们来熟悉测试环境: 1. 下载server代码,并运行 git clone https://github.com/SecurityCompass/LabServer.git 2. 这个serve ...

  2. MongoDB使用SSL

    1. MongoDB对SSL的支持情况 MongoDB社区版本不支持SSL,企业版提供对SSL的支持.MongoDB源代码中包含SSL的实现,可以自己编译带SSL的MongoDB. MongoDB支持 ...

  3. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  4. 【总结】java命令解析以及编译器,虚拟机如何定位类

    学Java有些日子了,一直都使用IDE来写程序.这样的好处就是能让我连如何用命令行编译,解释执行Java源代码都不知道,就更不清楚JDK中的编译器和虚拟机(包含字节码解释器)是如何定位到类文件的.悲哀 ...

  5. Hibernate的配置文件解析

    配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...

  6. mysql 日期

    数据类型 数据类型 格式 date YYYY-MM-DD datetime YYYY-MM-DD HH:MM:SS timestamp YYYY-MM-DD HH:MM:SS year YYYY 或 ...

  7. !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结

    http://hujiaweibujidao.github.io/blog/2013/11/18/android-ndk-and-opencv-development-3/ Android Ndk a ...

  8. 可辨别iPhone真假的网址

    在如下的网址中输入iPhone的序列号,可知道该iPhone的型号,生产日期,激活状态等. 1.http://www.app111.org/ 2.http://act.weiphone.com/wet ...

  9. [POJ3264]Balanced Lineup(线段树,区间最值差)

    题目链接:http://poj.org/problem?id=3264 一排牛按1~n标号记录重量,问每个区间最重的和最轻的差值. 线段树维护当前节点下属叶节点的两个最值,查询后作差即可. #incl ...

  10. HTML & CSS 小总结

    1. web 主机代理商 web hosting company, 让他们的服务器为你的页面服务2. 选择网站名字 例如: www.1234.com3. 寻找 把文件从电脑传到主机的途径4. 把新网站 ...