1、文件与文件组
在SQL Server 中数据库是由数据库文件和事务日志文件组成的。一个数据库至少应包含一个数据库文件和一个事物日志文件。
(1) 数据库文件(Database File)
数据库文件是存放数据库数据和数据库对象的文件。一个数据库可以有一个或多个数据库文件,一个数据库文件只属于一个数据库。当有多个数据库文件时,有一个文件被定义为主数据库文件(Primary Database File), 扩展名为mdf, 它用来存储数据库的启动信息和部分或全部数据,一个数据库只能有一个主数据库文件。其它数据库文件被称为次数据库文件(Secondary Database File), 扩展名为ndf, 用来存储主文件没存储的其它数据。
采用多个数据库文件来存储数据的优点体现在:
数据库文件可以不断扩充,而不受操作系统文件大小的限制;
可以将数据库文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取,提高了数据处理的效率。对于服务器型的计算机尤为有用。
(2) 事务日志文件(Transaction Log File)
事务日志文件是用来记录数据库更新情况的文件,扩展名为ldf。例如使用INSERT、UPDATE、 DELETE、 等对数据库进行更的操作都会记录在此文件中,而如SELECT 等对数据库内容不会有影响的操作则不会记录在案。一个数据库可以有一个或多个事务日志文件。
SQL Server 中采用“Write-Ahead (提前写)”方式的事务,即对数据库的修改先写入事务日志中,再写入数据库。其具体操作是,系统先将更改操作写入事务日志中,再更改存储在计算机缓存中的数据,为了提高执行效率,此更改不会立即写到硬盘中的数据库,而是由系统以固定4 的时间间隔执行CHECKPOINT 命令,将更改过的数据批量写入硬盘。SQL Server 有个特点,它在执行数据更改时会设置一个开始点和一个结束点,如果尚未到达结束点就因某种原因使操作中断,则在SQL Server 重新启动时会自动恢复已修改的数据,使其返回未被修改的状态。 由此可见,当数据库破坏时,可以用事务日志恢复数据库内容。
(3) 文件组(File Group)
文件组是将多个数据库文件集合起来形成的一个整体。每个文件组有一个组名。与数据库文件一样,文件组也分为主文件组(Primary File Group) 和次文件组(Secondary FileGroup) 一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用。主文件组中包含了所有的系统表。当建立数据库时,主文件组包括主数据库文件和未指定组的其它文件。在次文件组中可以指定一个缺省文件组,那么在创建数据库对象时如果没有指定将其放在哪一个文件组中,就会将它放在缺省文件组中。如果没有指定缺省文件组则主文件组,为缺省文件组。
注意:事务日志文件不属于任何文件组。
用系统存储过程显示数据库信息
SQL Server 提供了许多很有用的系统存储过程,可以用它们来得到许多从EnterpriseManager 界面中所不易或不能看到的信息(有关存储过程的详细介绍请参见“存储过程”章节。读者如果目前不了解存储过程也不要紧,可以把它当作函数或命令来用)。
(1) 用系统存储过程显示数据库结构
可以使用系统提供的系统存储过程Sp_helpdb 来显示数据库结构。
其语法如下:
sp_helpdb [[@dbname=] 'name']
使用Sp_helpdb 系统存储过程可以显示指定数据库的信息。如果不指定[@dbname=]
'name'子句,则会显示在master.dbo.sysdatabases 表中存储的所有数据库信息。命令执行成
功会返回0, 否则返回1。
用系统存储过程显示文件信息
可以使用系统提供的系统存储过程Sp_helpfile 来显示当前数据库中的文件信息。其语法如下:
sp_helpfile [[@filename =] 'name']如果不指定文件名称,则会显示当前数据库中所有的文件信息。命令执行成功会返回0, 否则返回1。
用系统存储过程显示文件组信息
可以使用系统提供的系统存储过程Sp_helpfilegroup 来显示当前数据库中文件组信息。其语法如下:
sp_helpfilegroup [[@filegroupname =] 'name']
如果不指定文件组名称,则会显示当前数据库中所有的文件组。命令执行成功会返回0 ,否则返回1。