在SQL Server 2005里面把表移动到另外一个filegroup里(ZT,经翻译)

来源:互联网 发布:淘宝背包女双肩包收口 编辑:程序博客网 时间:2024/06/14 05:31

在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@]


0 0
原创粉丝点击