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

在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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值