
第1章 创建及维护数据库
知识目标
● 了解数据库组成;
● 了解系统数据库的作用;
● 理解数据库文件、文件组的种类与作用;
● 理解数据库的配置选项。
技能目标
● 会创建数据库;
● 会管理数据库;
● 会分离和附加数据库。
知识学习
1.数据库组成
数据库的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构用于说明数据库是由哪些性质的信息所组成,SQL Server的数据库不仅仅只存储数据,所有与数据处理操作相关的信息都存储在数据库中。数据库的物理存储结构则是讨论数据库文件在磁盘中是如何存储的,数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。
SQL Server数据库管理系统中数据库文件是由数据文件和日志文件组成的,数据文件以盘区为单位存储在存储器中。
2.数据库文件
数据库文件是指数据库中用来存放数据库数据和数据库对象的文件,一个数据库可以有一个或多个数据文件,一个数据文件只能属于一个数据库。当有多个数据文件时,有一个文件被定为主数据文件,它用来存储数据库的启动信息和部分或者全部数据,一个数据库只能有一个主数据文件。数据文件则划分为不同的页面和区域,页是SQL Server存储数据的基本单位。
主数据文件是数据库的起点,指向数据库文件的其他部分,每个数据库都有一个主要数据文件,其扩展名为.mdf。
次数据文件包含除主数据库文件外的所有数据文件,一个数据库可以没有次数据文件,也可能有多个次数据文件,扩展名为.ndf。
3.日志文件
SQL Server的日志文件是由一系列日志记录组成的,日志文件中记录了存储数据库的更新情况等事务日志信息,用户对数据库进行的插入、删除和更新等操作也都会记录在日志文件中。当数据库发生损坏时,可以根据日志文件来分析出错的原因,或者数据丢失时,还可以使用事务日志恢复数据库。每个数据库至少必须拥有一个事务日志文件,而且允许拥有多个日志文件。
SQL Server 2012不强制使用.mdf、.ndf或.ldf作为文件的扩展名,但建议使用这些扩展名来帮助标识文件。SQL Server 2012中某个数据库中的所有文件的位置都记录在master数据库和该数据库的主文件中。
4.文件组
文件组(Filegroup)是文件的逻辑集合,用来存储数据文件和数据库对象,SQL Server自动创建一个名称为PRIMARY的主文件组,主文件组上存有系统表。SQL Server默认将数据文件、数据库对象(如表、索引等)存放在主文件组上。为了提高数据库的性能,如果希望将次数据文件、所创建的数据库对象存放在与主数据文件不同的存储设备上,就需要创建用户定义的文件组,然后通过数据库扩充容量增加次数据文件,创建数据库对象时将它们存放在用户定义的文件组上。
一个文件或者文件组只能用于一个数据库,不能用于多个数据库。次数据文件或数据库对象(如表、索引等)只能存放在一个文件组中,不可以存放在其他文件组中。文件组不适用于事务日志。
不能在READONLY(只读)的文件组上创建新数据库对象。读者可以将不允许修改的表存放在用户定义的文件组上,然后将文件组标记为READONLY。
5.系统数据库
SQL Server服务器安装完成之后,打开SSMS工具,在“对象资源管理器”面板中的“数据库”→“系统数据库”结点下可以看到几个已经存在的数据库,这些数据库在SQL Server安装到系统时就创建好了,下面分别介绍这几个系统数据库的作用。
(1)master数据库
master是SQL Server 2012中最重要的数据库,是整个数据库服务器的核心。用户不能直接修改该数据库,如果损坏了master数据库,那么整个SQL Server服务器将不能工作。该数据库中包含以下内容:所有用户的登录信息、用户所在的组、所有系统的配置选项、服务器中本地数据库的名称和信息、SQL Server的初始化方式等。作为一个数据库管理员,应该定期备份master数据库。
(2)model数据库
model数据库是SQL Server 2012中创建数据库的模板,如果用户希望创建的数据库有相同的初始化文件大小,则可以在model数据库中保存文件大小的信息;希望所有的数据库中都有一个相同的数据表,同样也可以将该数据表保存在model数据库中。因为将来创建的数据库以model数据库中的数据为模板,因此在修改model数据库之前要考虑到,任何对model数据库中数据的修改都将影响所有使用模板创建的数据库。
(3)msdb数据库
msdb数据库提供运行SQL Server Agent工作的信息。SQL Server Agent是SQL Server中的一个Windows服务,该服务用来运行制定的计划任务。计划任务是在SQL Server中定义的一个程序,该程序不需要干预即可自动开始执行。与tempdb和model数据库一样,在使用SQL Server时也不要直接修改msdb数据库,SQL Server中的其他一些程序会自动运行该数据库。例如,当用户对数据进行存储或者备份的时候,msdb数据库会记录与执行这些任务相关的一些信息。
(4)tempdb数据库
tempdb是SQL Server中的一个临时数据库,用于存放临时对象或中间结果,SQL Server关闭后,该数据库中的内容被清空,每次重新启动服务器之后,tempdb数据库将被重建。