本文主要是介绍在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@]
这篇关于在SQL Server 2005里面把表移动到另外一个filegroup里(ZT,经翻译)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!