数据库文件和Log文件以及查询数据库信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/uianqian/article/details/8550232

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。



猜你喜欢

转载自blog.csdn.net/uianqian/article/details/8550232