--(数据库级)文件组的系统视图为 sys.filegroups
--(数据库级)文件的系统视图为 sys.database_files
-- 用户数据库的对象定义,是存在主数据文件当中的(主数据文件和主日志文件不能删除),如果你新建一个文件组,(在还没有给它建任何数据文件的情况下),仍可指定建表及索引,或分区表在该文件组上。
ALTER DATABASE MyDB ADD FILEGROUP [MyDB_FileGroup_01];
create table t_test1(col1 int) on [MyDB_FileGroup_01];
create index ix_test1 on t_test1(col1);
ALTER DATABASE MyDB ADD FILEGROUP [MyDB_FileGroup_02];
create partition function pf_test2_range(int) as range left for values (100)
create partition scheme ps_test2_range as partition pf_test2_range to (MyDB_FileGroup_01,MyDB_FileGroup_02)
create table t_test2(col1 int, primary key CLUSTERED (col1) ) on pf_test2_range (col1);
-- 但你必须先给这个文件组建立数据文件,不能给这个表中插入数据
ALTER DATABASE MyDB ADD FILE ( NAME = N'MyDB_File_01',
FILENAME = N'E:/Program Files/MSSQL/Data/MyDB_File_01.ndf' , SIZE = 20MB , FILEGROWTH = 10% )
TO FILEGROUP [MyDB_FileGroup_01];
insert into t_test1(col1) values(1);
ALTER DATABASE MyDB ADD FILE ( NAME = N'MyDB_File_02',
FILENAME = N'E:/Program Files/MSSQL/Data/MyDB_File_02.ndf' , SIZE = 20MB , FILEGROWTH = 10% )
TO FILEGROUP [MyDB_FileGroup_02];
insert into t_test2(col1) values(1);
--相反,对于删除文件或文件组,需先truncate或delete表, 才能删除数据文件。必须删除引用文件组的对象,和文件组中的文件,才能删除文件组。
truncate table t_test2
ALTER DATABASE MyDB REMOVE FILE MyDB_File_02;
truncate table t_test1;
ALTER DATABASE MyDB REMOVE FILE MyDB_File_01;
drop table t_test2;
drop partition scheme ps_test2_range;
ALTER DATABASE MyDB REMOVE FILEGROUP MyDB_FileGROUP_02;
drop table t_test1;
ALTER DATABASE MyDB REMOVE FILEGROUP MyDB_FileGROUP_01;
--(实例级)文件组的系统视图为 sys.master_files