7.4 练习与实训

图7.15 还原数据库对话框

③选择不同的目标时间点和数据源。

④单击“确定”按钮即可。

7.1.4 建立索引

在SQL Server Management Studio中创建索引的步骤如下:

①打开“SQL Server Management Studio”窗口,在“对象资源管理器”中选择要创建索引的“表”节点,定位到“索引”。鼠标右键单击“索引”,选择“新建索引”选项。在如图7.16所示的对话框中,输入新建索引名及其类型。

图7.16 新建索引对话框

②单击“添加”按钮,弹出如图7.17所示的窗口,选择索引键列。

图7.17 添加索引键对话框

③设置索引键列的属性,如图7.18所示。也可以通过对话框左边“选项”来设置索引的参数,通过“包含性列”选项来为索引添加非键列值辅助列,通过“存储”选项来选择索引存储文件组等参数。

图7.18 索引排序对话框

④单击“确定”按钮,完成索引的创建。

7.1.5 收缩数据库

如果在创建数据库时,分配的空间过大,可通过收缩数据库来减小它占用的空间。具体步骤如下:

①打开“SQL Server Management Studio”窗口,并连接到数据库实例。

②在“对象资源管理器”窗格中展开数据库实例下的“数据库”项。

③选中需要收缩的jxgl数据库,并用鼠标右键单击。

④在弹出的快捷菜单中选择“任务”→“收缩”→“数据库”命令,打开“收缩数据库”对话框,如图7.19所示。

图7.19 收缩数据库对话框

⑤在“收缩后文件中的最大可用空间”文本框中输入一个整数值。这个值的取值范围为0~99,表示收缩后数据库文件可用空间的最大百分数。

⑥完成设置后,单击“确定”按钮,执行收缩数据库任务。

7.1.6 数据导出与导入

数据导出与数据导入操作步骤和方法很相似,这里仅介绍数据导出的操作方法。

①打开“SQL Server Management Studio”窗口,在“对象资源管理器”中展开服务器,定位“jxgl”数据库。鼠标右键单击,快捷菜单中选择“任务”→“导出数据”选项,如图7.20所示。

图7.20 导出数据选项框

②选择要从中复制数据的源,选择“jxgl”数据库,单击“下一步”按钮,如图7.21所示。

图7.21 选择数据源对话框

③指定将数据复制到何处,单击“新建”按钮创建自己定义的数据库,如图7.22所示。

图7.22 选择导出目标对话框

④在“名称”中输入相应名称,如jxgl_1,单击“确定”按钮,如图7.23所示。

图7.23 新建目标数据库对话框

⑤目标数据库选定“jxgl_1”,单击“下一步”按钮,如图7.24所示。

⑥指定是从数据源复制一个或多个表和视图,还是从数据源复制查询结果。选定后,单击“下一步”按钮,如图7.25所示。

图7.24 目标数据库选定对话框

图7.25 导出表和视图选项框

⑦将数据库“jxgl”的表和视图导出给数据库“jxgl_1”。根据个人需求选择一个或多个复制的表和视图,此处单击“全选”按钮,再单击“下一步”按钮,如图7.26所示。

⑧单击“完成”按钮进行复制数据,执行成功后单击“关闭”按钮,如图7.27所示。

图7.26 选择源表和源视图对话框

图7.27 完成导出对话框

7.2 相关知识

7.2.1 数据库的脱机与联机

脱机与联机是针对数据库的当前状态来说的,当一个数据库处于可操作、可查询的状态时就是联机状态,而一个数据库尽管可以看到其名字出现在数据库节点中,但对其不能执行任何有效的数据库操作时就是脱机状态。在数据库管理及软件开发过程中,常会出现对当前数据库进行迁移的操作。在联机的状态下,SQLServer 2005是不允许复制数据库文件的。

7.2.2 分离和附加数据库

分离和附加数据库的操作可以将数据库从一台计算机移到另一台计算机,而不必重新创建数据库。除了系统数据库以外,其他数据库都可以从服务器的管理中分离出来,脱离服务器管理的同时保持数据文件和日志文件的完整性和一致性。分离后的数据库又可以根据需要重新附加到数据库服务器中。当附加到数据库上时,必须指定主数据文件的名称和物理位置。主文件包含查找由数据库组成的其他文件所需的信息。如果存储的文件位置发生了变化,就需要手工指定次要数据文件和日志文件的存储位置。

SQL Server服务器由若干个数据库组成,除了master,model等系统数据库外,其他的数据库都可从服务器中分离出来,脱离服务器的管理,同时保持数据文件和日志文件的完整性和一致性。这样分离出来的数据库的日志文件和数据文件可附加到其他SQL Server服务器上构成完整的数据库,附加的数据库和分离时完全一致。数据库的分离好比是将书(数据库)从书架(企业管理器)上取下来。

与分离对应的是附加数据库操作。附加数据库可很方便地在SQL Server服务器之间利用分离后的数据文件和日志文件组织成新的数据库。数据库的附加好比是将书(数据库)重新放上书架(企业管理器)。

在实际工作中,分离数据库作为对数据基本稳定的数据库的一种备份方法来使用。

7.2.3 备份和还原数据库

备份就是制作数据库结构和数据的拷贝,以便在数据库遭到破坏时能够修复数据库。数据库的破坏是难以预测的,因此必须采取能够还原数据库的措施。可能造成数据损失的因素很多,一般,造成数据丢失的常见原因包括以下4种:

①存储介质故障。如果保存有数据库文件的磁盘驱动器彻底崩溃,而用户又不曾进行过数据库备份,则有可能导致数据的彻底丢失。

②用户的错误操作。如果用户无意或恶意地在数据库上进行了大量的非法操作,如删除了某些重要的数据、表格,甚至删除了整个数据库等,则数据库系统将处于难以使用和管理的混乱局面。重新恢复条理性的最好办法是使用备份信息,将数据库系统重新恢复到一个可靠、稳定、一致的状态下。

③服务器的彻底崩溃。再好的计算机、再稳定的软件也有漏洞存在,如果某天数据库服务器彻底瘫痪,用户面对的将是彻底重建系统的艰难局面。如果事先进行过完善而彻底的备份操作,用户将可迅速地完成系统的重建工作,并将数据灾难造成的损失减少到最小。

④一些难以预料的因素也可能导致数据库系统的严重损坏,如破坏性的计算机病毒、盗窃、电源故障、自然灾害(如火灾、洪水、地震)等。

如果数据库受到损坏导致不可读,则用户应该首先删除受损的数据库,然后再从备份的文件中进行数据库的重建从而恢复数据库。总之,有一个良好的备份策略,并严格执行是非常重要的。

(1)备份介质

备份介质是指将数据库备份到的目标载体,即备份到何处。SQL Server 2005中,允许使用以下两种类型的备份介质:

①硬盘。是最常用的备份介质,可用于备份本地文件,也可用于备份网络文件。

②磁带。是大容量的备份介质,磁带仅可用于备份本地文件。

(2)何时备份

对于系统数据库和用户数据库,其备份时机是不同的。

①系统数据库。当系统数据库master,msdb和model中的任何一个被修改以后,都要将其备份。

master数据库包含了SQL Server系统有关数据库的全部信息,即它是“数据库的数据库”,如果master数据库损坏,那么SQL Server 2005可能无法启动,并且用户数据库可能无效。

②用户数据库。当创建数据库或加载数据库时,应备份数据库;当为数据库创建索引时,应备份数据库,以便恢复时可大大节省时间;当执行了不记日志的T-SQL命令时,应备份数据库,这是由于这些命令未记录在事务日志中,因此恢复时不会被执行。不记日志的命令有BACKUP LOGWITH NO_LOG、WRITETEXT、UPDATETEXT、SELECT INTO、命令行实用程序、BCP命令等。

(3)备份频率

备份频率即相隔多长时间进行备份。确定备份频率主要考虑两点:一是系统恢复的工作量;二是系统执行的事务量。通常如果系统环境为联机事务处理,则应当经常备份数据库;而如果系统只执行少量作业或主要用于决策支持,就不用经常备份。

(4)限制的操作

SQL Server 2005在执行数据库备份的过程中,允许用户对数据库继续操作,但不允许用户在备份时执行下列操作:创建或删除数据库文件;创建索引;不记日志的命令。

若系统正执行上述操作中的任何一种时试图进行备份,则备份进程不能执行。

(5)备份方法

数据库备份常用的两类方法是完全备份和差异备份。完全备份每次都备份整个数据库或事务日志,差异备份则是只备份自上次备份以来发生过变化的数据库的数据,差异备份也称为增量备份。

SQL Server 2005中有两种基本的备份,一是只备份数据库;二是备份数据库和事务日志。它们又都可以与完全或差异备份相结合,另外,当数据库很大时,也可以进行个别文件或文件组的备份,从而将数据库备份分割为多个较小的备份过程。这样就形成了以下4种备份方法:

①完全数据库备份。

②数据库和事务日志备份。

③差异备份。

④数据库文件或文件组备份。

7.2.4 索引

在数据库中,如果想在某个表中快速查找满足条件的记录,可创建索引。索引可使数据库程序无须对整个表进行扫描,就可在其中找到所需数据。创建索引可加快检索数据的速度。索引包含由表或视图中的一列或多列生成的键。当SQL Server进行数据查询时,查询优化器会自动计算现有的几种执行查询方案中,哪种方案的开销最小,速度最快,然后就会按照该方案来查询。因此,可通过高效的有序查找算法(如折半查找等)找到索引项,再根据索引项中记录的物理地址,找到查询结果的存储位置。

(1)建立索引的一般原则

①对经常用来检索的字段建立索引。

②对数据表中的主键建立索引。

③对数据表中的外键建立索引。

④对经常用于连接的字段建立索引。

(2)索引的分类

索引类型主要有聚集索引、非聚集索引和唯一索引。

1)聚集索引和非聚集索引

每个表最多可以有一个聚集索引和249个非聚集索引。其中,包括为支持表中所定义的PRIMARY KEY和UNIQUE约束而生成的索引。

聚集索引对在物理数据页中的数据按列进行排序,然后再重新存储到磁盘上。用聚集索引查找数据很快。聚集索引一般创建在表中经常搜索的列或按顺序访问的列上。创建聚集索引时应该考虑以下4个因素:

①每个表只能有一个聚集索引。

②创建任何非聚集索引之前要首先创建聚集索引。

③关键值的唯一性使用UNIQUE关键字或者由内部的唯一标识符明确维护。

④要保证有足够的空间创建聚集索引。

用非聚集索引不会影响数据表中记录的实际存储顺序。非聚集索引中存储了组成非聚集索引的关键字值和行定位器。由于非聚集索引使用索引页存储,因此比聚集索引需要的存储空间较少,但检索效率比聚集索引低。由于一个表只能建一个聚集索引,当用户需要建立多个索引时,就需要使用非聚集索引。每个表中最多只能创建249个非聚集索引。

在下列情况下,可考虑使用非聚集索引:

①含有大量唯一值的字段。

②返回很小的或者单行结果集的检索。

③使用ORDER BY子句的查询。

2)唯一索引

如果要求索引中的字段值不能重复,可以建立唯一索引。创建唯一索引时,对于单个字段的索引,要求这个字段中的各个值不能重复。也可以对多个字段的组合创建索引,索引中包含多个字段的复合索引也可以是唯一索引,多个字段的组合取值不能重复。

注意:一个索引中最多可以包含16个字段的组合,并且索引中的所有字段必须属于同一个数据表。

7.3 任务小结

此任务主要是进行数据库的维护与管理。在此过程中学习掌握如何进行数据库的脱机与联机、分离与附加、备份与还原、数据导入与导出以及索引的建立等基本操作。

通过上述任务注意到对数据库进行迁移等操作时必须处于脱机状态,联机状态是不允许进行此类操作。而将数据库从一台计算机移到另一台计算机,可采用分离和附加数据库即可简单实现移植。同时分离数据库常作为对数据基本稳定的数据库的一种备份的方法来使用。为便于数据库遭到破坏时能够修复数据库,数据库备份与还原也是很重要的措施,用户可根据自己的需求进行差异性备份操作,如完全数据库备份、数据库和事务日志备份、差异备份、数据库文件或文件组备份。为数据库创建索引,可以大大提升信息检索的速度,主要有聚集索引、非聚集索引、唯一索引这几种类型。

7.4 练习与实训

(1)选择题

从ABCD 4个答案中选出符合题意的一个或多个答案。

①下列关于数据库备份的描述中,错误的是(  )。

A.如果数据库很稳定就不需要经常作备份,反之要常作备份以防止数据库损坏

B.数据库备份是一项很复杂的任务,应该由专业的管理人员来完成

C.数据库备份也受到数据库恢复模式的制约

D.数据库备份策略的选择应该综合考虑各方面的因素,并不是备份做得越多越全就越好

②关于数据库分离与附加描述错误的是(  )。

A.在进行分离与附加操作时,数据库可以进行更新操作

B.在移动数据库前,最好为数据库作一个完整的备份

C.需确保数据库要移动的目标位置及将来数据增长能够有足够的空间

D.分离数据库并没有将其从磁盘上真正地删除,如果需要可以对数据库的组成文件进行移动、复制或删除

③建立索引的作用之一是(  )。

A.便于管理          B.提高查询速度

C.节约存储空间        D.提高查询和更新的速度

④索引对数据库表中(  )字段的值进行排序。

A.一个      B.多个      C.一个或多个      D.零个

(2)简答题

①SQL Server 2005有哪几种备份方式?

②如何分离与附加数据库?

③聚集索引与非聚集索引之间有哪些不同点?在一个表中可以建立多少个聚集索引和非聚集索引?

(3)实训题

对华龙社区图书室的图书借阅管理数据库进行分离,并附加到另外一台计算机上。同时,对此数据库进行备份及还原操作。