在SQL Server 2005里面, alter table新增了一个move to 选项,可以将table移动到另外一个filegroup里面,其原理为:删除一个表的cluster index时, SQL Server会将数据移动到一个普通的表里(heap).通过指定move to选项,可以控制SQL Server将数据移动到指定的filegroup里.
举例说明如下:
--先创建一个测试数据库
USE master
GO
CREATE DATABASE TEST
GO
--创建两个filegroup
ALTER DATABASE TEST ADD FILEGROUP TEST_DATA_1
GO
ALTER DATABASE TEST ADD FILEGROUP TEST_DATA_2
GO
--添加一个数据文件到TEST_DATA_1
ALTER DATABASE TEST
ADD FILE
( NAME = TEST1,
FILENAME = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATATEST_1.ndf’,
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB)
TO FILEGROUP TEST_DATA_1
GO
--添加另外一个数据文件到TEST_DATA_2
ALTER DATABASE TEST
ADD FILE
( NAME = TEST2,
FILENAME = ‘C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATATEST_2.ndf’,
SIZE = 1MB,
MAXSIZE = 10MB,
FILEGROWTH = 1MB)
TO FILEGROUP Test_DATA_2
GO
--在TEST_DATA_1创建一个数据表
USE TEST
GO
CREATE TABLE TAB1
(
TAB1_ID INT IDENTITY(1,1),
TAB1_NAME VARCHAR(100),
CONSTRAINT PK_TAB1 PRIMARY KEY(TAB1_ID)
) ON TEST_DATA_1 –- Filegroup we created.
GO
--插入一些测试数据
INSERT INTO TAB1(TAB1_NAME)
SELECT Table_Name
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = ‘BASE TABLE’
GO
--先检查一下:
sp_help TAB1
Data_located_on_filegroup
—————————
TEST_DATA_1
index_name index_description
———- ——————————————————-
PK_TAB1 clustered, unique, primary key located on TEST_DATA_1
......
--开始move filegroup操作,删除Cluster Key,注意需要指定move to 选项
ALTER TABLE TAB1 DROP CONSTRAINT PK_TAB1 WITH (MOVE TO TEST_DATA_2)
GO
--再把主键加上
ALTER TABLE TAB1 ADD CONSTRAINT PK_TAB1 PRIMARY KEY(TAB1_ID)
GO
--最后来检查一下
sp_help TAB1
Data_located_on_filegroup
—————————
TEST_DATA_2
通过这个例子,也大概可以看到filegroup的一个典型用法: 首先定义逻辑上的filegroup, 然后把数据文件根据其特点(例如物理设备, 也可以纯粹是逻辑上的划分)放进不同的fielgroup, 在创建表时通过指定filegroup可以影响数据表的物理位置,
此外,通过把数据库对象放进不同的filegroup里,在进行backup和restore时也可以灵活对待.
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/100682/viewspace-1021559/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/100682/viewspace-1021559/