1
数据库技术及应用
1.6.1.2 3.1.2 文件和文件组
3.1.2 文件和文件组

SQL Server2008数据库主要由文件和文件组组成。数据库中的所有数据和对象都被存储在文件中。SQL Server将数据库映射为一组操作系统文件。数据和日志信息绝不会混合在同一个文件中,而且一个文件只有一个数据库使用。文件组是命名的文件集合,用于帮助数据布局和管理任务,例如,备份和还原操作。

1.数据库文件

SQL Server数据库具有三种类型的文件:

1)主数据文件

主数据文件是数据库的起点,指向数据库中的其他文件。每个数据库都有一个主数据文件。主数据文件的推荐文件扩展名是.mdf。例如,学生管理系统的主数据文件名为Student.mdf。

2)次要数据文件

除主数据文件以外的所有其他数据文件都是次要数据文件。某些数据库可能不含有任何次要数据文件,而有些数据库则含有多个次要数据文件。次要数据文件的推荐文件扩展名是.ndf。

3)日志文件

日志文件包含着用于恢复数据库的所有日志信息。每个数据库必须至少有一个日志文件,也可以有多个。日志文件的推荐文件扩展名是.ldf。例如,图书馆管理系统的日志文件名为Student_logl.df。

SQL Server不强制使用mdf、ndf和ldf文件扩展名,但使用它们有助于标识文件的类型和用途。

2.文件组

为便于分配和管理,可以将数据库对象和文件一起分成文件组。有如下两种类型的文件组:

1)主文件组

主文件组包含主数据文件和任何没有明确分配给其他文件组的其他文件。系统表都分配在主文件组中。

2)用户定义文件组

用户定义文件组是通过在CREATEDATABASE或ALTERDATABASE语句中使用FILEGROUP关键字指定的任何文件组。

每个数据库中均有一个文件组被指定为默认文件组。如果创建表或索引时未指定文件组,则所有表或索引都从默认文件组中分配。一次只能有一个文件组作为默认文件组。如果没有指定默认文件组,则将主文件组作为默认文件组。

对文件进行分组时,一定要遵循文件和文件组的设计规则:

(1)文件只能是一个文件组的成员。

(2)文件或文件组不能由一个以上的数据库使用。

(3)数据和事务日志信息不能属于同一文件或文件组。

(4)日志文件不能作为文件组的一部分。日志空间与数据空间分开管理。