SQL SERVER将一个文件组的数据移动到另一个文件组
发布时间:2016-08-15 23:37:09 所属栏目:MsSql教程 来源:站长网
导读:有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里的菠萝大侠
有经验的大侠可以直接忽视这篇文章~
这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里的菠萝大侠,终于知道怎麽做了 我自己会把不明白的问题一定会问到底的,之前在论坛问过这个弱弱的问题,但是由于太弱了,人家随便答复了一下 然后斑竹就标记为答案了~ 移动数据: 1、有表分区 2、没有表分区 我这里只讨论没有表分区的情况,表分区的情况还不是很明白 例子 比如:你有三个文件组,其中一个是主文件组 测试脚本: USE master GO IF EXISTS(SELECT * FROM sys.[databases] WHERE [database_id]=DB_ID('Test')) DROP DATABASE [Test] --1.创建数据库 CREATE DATABASE [Test] GO USE [Test] GO --2.创建文件组 ALTER DATABASE [Test] ADD FILEGROUP [FG_Test_Id_01] ALTER DATABASE [Test] ADD FILEGROUP [FG_Test_Id_02] --3.创建文件 ALTER DATABASE [Test] ADD FILE (NAME = N'FG_TestUnique_Id_01_data',FILENAME = N'E:FG_TestUnique_Id_01_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB ) TO FILEGROUP [FG_Test_Id_01]; ALTER DATABASE [Test] ADD FILE (NAME = N'FG_TestUnique_Id_02_data',FILENAME = N'E:FG_TestUnique_Id_02_data.ndf',SIZE = 1MB, FILEGROWTH = 1MB ) TO FILEGROUP [FG_Test_Id_02]; --4.创建表,这个表的数据存放在[FG_Test_Id_01] 文件组上 CREATE TABLE aa(id INT ,cname NVARCHAR(4000)) ON [FG_Test_Id_01] GO --5.插入数据 INSERT INTO [dbo].[aa] SELECT 1,REPLICATE('s',3000) GO 500 --6.查询数据 SELECT * FROM [dbo].[aa] --7.创建聚集索引在[FG_Test_Id_02]文件组上 CREATE CLUSTERED INDEX PK_ID ON [dbo].[aa]([id]) WITH(ONLINE=ON) ON [FG_Test_Id_02] GO --8.我们查看一下文件组的逻辑文件名 EXEC [sys].[sp_helpdb] @dbname = TEST -- sysname --9.收缩一下FG_Test_Id_01文件组文件 DBCC SHRINKFILE(FG_TestUnique_Id_01_data,1) --10.你可以选择drop掉聚集索引,也可以选择不drop掉聚集索引 DROP INDEX PK_ID ON [dbo].[aa] USE master GO DROP DATABASE [Test] 上面的脚本虽然简单,但是隐藏了非常多的知识点 (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |