SQL SERVER将一个文件组的数据移动到另一个文件组
发布时间:2016-08-15 16:10:11 所属栏目: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]
上面的脚本虽然简单,但是隐藏了非常多的知识点 (编辑:南平站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读

