SQL SERVER删除文件组和文件

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

时间: 2024-10-05 15:58:03

SQL SERVER删除文件组和文件的相关文章

SQL Server 大数据搬迁之文件组备份还原实战

原文:SQL Server 大数据搬迁之文件组备份还原实战 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 解决方案(Solution) 搬迁步骤(Procedure) 搬迁脚本(SQL Codes) 注意事项(Attention) 疑问(Questions) 参考文献(References) 二.背景(Contexts) 有一个数据库大概在700G左右,需要从服务器A搬迁到服务器B,两台服务器网络传输速度可以达到8MB/s,怎么做才能更

Sql server 文件组和文件

1,文件组和文件的作用 Sql Server的数据存储在文件中,文件是实际存储数据的物理实体,文件组是逻辑对象,Sql server通过文件组来管理文件. 一个DataBase有一个或多个FileGroup,PrimaryFileGroup是必需的,用户可以根据需要添加FileGroup.每一个FileGroup管理一个或多个文件,其中PrimaryFileGroup管理一个master data file,扩展名是.mdf,这个file是系统默认生成的:扩展名是.ndf的文件是用户根据需要添加

SQL Server 的文件组和文件

1.默认情况 一般创建数据库后,有两个文件,后缀分别为 .mdf(主要文件) 和 .ldf(日志文件) 默认只有一个文件组 2.添加文件组,文件组是用来放文件的(用户可以添加文件 后缀默认为 .ndf的文件) 3.添加文件 4.为什么用文件组 对于用户角度来说,需对创建的对象指定存储的文件组只有三种数据对象:表,索引和大对象(LOB) 使用文件组可以隔离用户和文件,使得用户针对文件组来建立表和索引,而不是实际磁盘中的文件.当文件移动或修改时,由于用户建立的表和索引是建立在文件组上的,并不依赖具体

SQL Server删除重复行的6个方法

SQL Server删除重复行是我们最常见的操作之一,下面就为您介绍六种适合不同情况的SQL Server删除重复行的方法,供您参考. 1.如果有ID字段,就是具有唯一性的字段 delect   table  tableName  where   id   not   in   (   select   max(id)   from   table   group   by   col1,col2,col3...   )    group   by   子句后跟的字段就是你用来判断重复的条件,如

sql server 删除数据库

以前的数据库装在虚拟机里,今天在本机上装了一个SQL2008,远程连接到虚拟机里的SQLSERVER上以后,用drop database test删除以前的测试数据库失败,提示“无法删除数据库 'test',因为该数据库当前正在使用”.当时虚拟机刚开,实在弄不懂为什么会提示说正在使用中.如果重启,太不甘心,上网找了一下,发现只需要几步就可以完美解决: 以下为相关代码 use master go sp_who kill 53 drop database test sp_who当前用户.会话和进程的

Sql Server删除数据表中重复记录 三种方法

本文介绍了Sql Server数据库中删除数据表中重复记录的方法. [项目]数据库中users表,包含u_name,u_pwd两个字段,其中u_name存在重复项,现在要实现把重复的项删除![分析]1.生成一张临时表new_users,表结构与users表一样:2.对users表按id做一个循环,每从users表中读出一个条记录,判断new_users中是否存在有相同的u_name,如果没有,则把它插入新表:如果已经有了相同的项,则忽略此条记录:3.把users表改为其它的名称,把new_use

SQL Server删除distribution数据库二

以前总结过一遍博文SQL Server删除distribution数据库,里面介绍了如何删除distribution数据库.今天介绍一个删除distribution的特殊案例, 在这之前,我不知道这个服务器上的Replication被如何折腾过,在SSMS管理界面的Local Publications和Local Subscriptions里面已经看不到任何关于发布.订阅相关的内容. 但是使用命令EXEC sp_helpdistpublisher会看到使用分发服务器的发布服务器的属性 下面SQL

SQL Server删除表信息的三种方法

1.使用DELETE实现SQL Server删除表信息 (1)删除表中的全部信息 USE student GO DELETE student      --不加where条件,删除表中的所有记录 go (2)删除表中符合条件的记录 USE student GO DELETE student where Id='001'    --删除表中符合条件的记录 GO 2.使用TRUNCATE删除表中的信息 USE student GO TRUNCATE TABLE    student   --删除表中

sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)

转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件组 总结: (1)如果是一个文件组内只有一个文件 ~~把所有在该文件组内的表删除聚集索引,然后新建聚集索引至新的文件组 (2)如果是一个文件组内多个文件 [1]把某个文件清空转移到其他文件:使用DBCC SHRINKFILE(要移动数据的数据文件逻辑名称,EMPTYFILE) [2]把该文件组内所有