有經驗的大俠可以直接忽視這篇文章~
這個問題有經驗的人都知道怎麽做,因為我們公司的數據量不大沒有這個需求,也不知道怎麽做實驗
今天求助了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]
上面的腳本雖然簡單,但是隱藏了非常多的知識點