已单独创建的文件(即没有加入文件组的文件)不能再移入文件组。文件组是逻辑上用于管理文件的。文件才是物理上的存在。当单独的primary主数据库文件超过window 文件大小时可通过添加文件组为数据库添加新空间。在创建表,索引时可指定其所在文件,提交io读写效率。
---添加文件组
alter database Partitiondb
add filegroup Datagroup1
go
--查看数据库文件信息
sp_helpfilegroup
--添加文件到文件组
alter database partitiondb
add file
(
name=worksheet1,
filename='d:\worksheet1.ndf',
size=10MB, --该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。
--如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。
--如果未指定 max_size,则文件大小将一直增加,直至磁盘已满。
filegrowth=20MB
)
,(
name=worksheet2,
filename='e:\worksheet2.ndf',
size=10MB, --该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。
--如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。
--如果未指定 max_size,则文件大小将一直增加,直至磁盘已满。
filegrowth=20MB
),
(
name=worksheet3,
filename='f:\worksheet3.ndf',
size=10MB, --该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。
--如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。
--如果未指定 max_size,则文件大小将一直增加,直至磁盘已满。
filegrowth=20MB
) to filegroup Datagroup1
alter database Partitiondb
add filegroup Datagroup1
go
--查看数据库文件信息
sp_helpfilegroup
--添加文件到文件组
alter database partitiondb
add file
(
name=worksheet1,
filename='d:\worksheet1.ndf',
size=10MB, --该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。
--如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。
--如果未指定 max_size,则文件大小将一直增加,直至磁盘已满。
filegrowth=20MB
)
,(
name=worksheet2,
filename='e:\worksheet2.ndf',
size=10MB, --该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。
--如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。
--如果未指定 max_size,则文件大小将一直增加,直至磁盘已满。
filegrowth=20MB
),
(
name=worksheet3,
filename='f:\worksheet3.ndf',
size=10MB, --该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。
--如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。
--如果未指定 max_size,则文件大小将一直增加,直至磁盘已满。
filegrowth=20MB
) to filegroup Datagroup1
示例二:
--创建文件组数据库
create database dbStudy
on primary
(name='dbPrimary',
filename='d:\dbprimary.mdf'),
filegroup dbstudyfilegroup1
(name='dbgroupfile1',
filename='d:\dbgroupfile1.ndf'
),
(name='dbgroupfile2',
filename='d:\dbgroupfile2.ndf'
),
filegroup dbstudyfilegroup2
(name='dbgroupfile3',
filename='d:\dbgroupfile3.ndf'
)
log on
(name='dbstudylog',
filename='d:\dbgrouplog.ldf')
go
-----查询当前数据库 文件组和文件
select
df.[name],df.physical_name,df.size,df.growth,
f.[name][filegroup],f.is_default
from sys.database_files df join
sys.filegroups f
on df.data_space_id=f.data_SPACE_id
dbPrimary d:\dbprimary.mdf 280 128 PRIMARY 1
dbgroupfile1 d:\dbgroupfile1.ndf 128 128 dbstudyfilegroup1 0
dbgroupfile2 d:\dbgroupfile2.ndf 128 128 dbstudyfilegroup1 0
dbgroupfile3 d:\dbgroupfile3.ndf 128 128 dbstudyfilegroup2 0
--修改默认数据库文件
alter database dbstudy
modify filegroup dbstudyfilegroup1 default
---- 删除数据库文件组
alter database dbstudy
remove file dbstudyfilegroup1
create database dbStudy
on primary
(name='dbPrimary',
filename='d:\dbprimary.mdf'),
filegroup dbstudyfilegroup1
(name='dbgroupfile1',
filename='d:\dbgroupfile1.ndf'
),
(name='dbgroupfile2',
filename='d:\dbgroupfile2.ndf'
),
filegroup dbstudyfilegroup2
(name='dbgroupfile3',
filename='d:\dbgroupfile3.ndf'
)
log on
(name='dbstudylog',
filename='d:\dbgrouplog.ldf')
go
-----查询当前数据库 文件组和文件
select
df.[name],df.physical_name,df.size,df.growth,
f.[name][filegroup],f.is_default
from sys.database_files df join
sys.filegroups f
on df.data_space_id=f.data_SPACE_id
dbPrimary d:\dbprimary.mdf 280 128 PRIMARY 1
dbgroupfile1 d:\dbgroupfile1.ndf 128 128 dbstudyfilegroup1 0
dbgroupfile2 d:\dbgroupfile2.ndf 128 128 dbstudyfilegroup1 0
dbgroupfile3 d:\dbgroupfile3.ndf 128 128 dbstudyfilegroup2 0
--修改默认数据库文件
alter database dbstudy
modify filegroup dbstudyfilegroup1 default
---- 删除数据库文件组
alter database dbstudy
remove file dbstudyfilegroup1
文件碎片
如果大量的文件共享同一磁盘,允许文件自动增长可能会使这些文件产生碎片。因此,建议在尽可能多的不同可用本地物理磁盘上创建文件或文件组。将争夺空间最激烈的对象置于不同的文件组中。