第5章创建和管理数据库任课老师:【本章要点】数据库在信息管理系统中,数据库是数据的存储单位,数据库如同一个容器,里面放置着数据表、视图、索引、存储过程等数据库对象。数据库的创建是数据库系统逻辑结构的物理实现过程,是数据库系统管理员的核心工作。数据库是数据库系统的基本管理单元,管理数据库是管理其他数据库对象的基础。本章主要介绍数据库的创建与管理,包括以下几方面内容:●数据库文件、文件组、事务日志文件等概念;●设计数据库、创建数据库;●数据库的管理;●数据库选项的设置。5.1SQLServer数据库基础知识每一个SQLServer的数据库都是由一组系统文件所组成,文件又可被组合成为文件组。文件组可方便数据的管理与分类,增进系统执行效能。1.数据库文件数据库中的文件又可分为数据文件(datafile)及日志文件(logfile)。数据文件用以储存数据及对象(如数据表、索引、检视表、触发器、预存程序等),根据文件类型,数据文件又分为主要数据文件及次要数据文件两种。5.1SQLServer数据库基础知识日志文件仅用以储存有关事务日志的数据。日志文件的空间和数据文件的空间是分开的,不能把日志文件视为数据文件的一部份。每个SQLServer数据库至少要包含一个数据文件及一个日志文件,这些文件不可与其它数据库共享。即一个数据库的数据文件及日志文件只能属于这个数据库。5.1SQLServer数据库基础知识数据库的三种文件类型:●主要数据文件:顾名思义,主要数据文件包含了一个系统的主要数据文件,如系统数据库启动信息以及系统的数据表与对象。主要数据文件也可以储存用户创建的数据表与对象。每一个数据库一定要有一个(且只能有一个)主要数据文件,主要数据文件的扩展名是.mdf。5.1SQLServer数据库基础知识●次要数据文件:次要数据文件可储存不在主要数据文件中的数据及对象。每个数据库中并不一定要有次要数据文件,用户可以选择把所有的资料都放在主要数据文件内。有些数据库则会利用一个或多个次要数据文件来将数据分散在不同的磁盘。次要数据文件的扩展名是.ndf。5.1SQLServer数据库基础知识●事务日志文件:这个文件记录所有事务信息,这些记录可用来复原数据库的数据。每一个数据库至少要有一个事务日志文件。事务日志文件的扩展名为.ldf。5.1SQLServer数据库基础知识2.数据库文件组对一个简单的数据库来说,可以只包含一个用于存放所有数据、对象的主要数据文件和一个事务日志文件即可。而复杂的数据库则可能包含一个主要数据文件、多个次要数据文件和多个事务日志文件。这样一个数据库要如何整合分散在各个数据文件的数据?这就需要利用文件组。5.1SQLServer数据库基础知识文件组可将文件分组以便管理与储存。文件组将数据库分散建立在多个磁盘、磁盘控制卡或磁盘阵列上以加强数据库的执行效能。利用文件组可以将数据表和索引建立在指定的磁盘上。在不同的文件组建立数据表及索引,可控制数据储存的位置,增进数据库效能。5.1SQLServer数据库基础知识文件组可分为三种类型:●主要文件组:包括主要数据文件,及未放入其它文件组的文件。系统数据表(定义使用者、对象和数据库权限)均放在主要文件组。用户建立数据库时,SQLServer会自动建立系统数据表。●用户文件组:是指在建立数据库的过程中,用户自定义的文件组。在指定的用户文件组中,可建立数据表和索引。5.1SQLServer数据库基础知识●预设文件组:如果数据表和索引在建立时都未指定文件组,则所有数据表与索引的分页都会置入预设文件组。在每个数据库中,一次只能有一个文件组当作预设的文件组。如果没有指定预设的文件组,则默认值为主要文件组。系统管理员可把预设状态从一个文件组切换到另一个文件组。在同一时间,只能有一个预设文件组。5.1SQLServer数据库基础知识用户可以用ALTERDATABASE指令来更改文件组,一般形式为:ALTERDATABASEdatabase_nameMODIFYFILEGROUPfilegroup_nameDEFAULT若将预设文件组设成用户文件组,则数据库对象就可以自动建立在所指定的文件组中,而不需每次指定对象属于哪个文件组。5.1SQLServer数据库基础知识此外,文件组的另一个好处是可依文件或文件组为主进行数据库备份。如果用户的数据库很大,不能一次备份全部内容,可分别备份数据库中的文件或文件组,而无需一次备份整个数据库。5.1SQLServer数据库基础知识3.规则和建议在SQLServer数据库中使用文件和文件组时,应遵守以下规则:文件和文件组只能用于一个数据库。一个文件只能属于一个文件组。数据和事务日志文件数据不能在同一个文件中。日志文件空间和数据文件空间应分别管理。事务日志文件文件不是文件组的一部分。数据库一旦建立了文件,此文件就不能移动到另一个文件组中,除非删除该文件,并重新建立文件。5.1SQLServer数据库基础知识在具体设计数据库,设定文件和文件组的数量以及文件和文件组的放置位置等方面时,开发人员应根据实际需求的情况,考虑以下建议:●大多数的数据库只需要一个数据文件和一个事务日志文件即可顺利运作。对于I/O不是特别密集的数据库,建议使用这种设计。●日志文件与数据文件必须放置于不同的实体磁盘中。●如果需要使用多个数据文件,可设定主要数据文件用于储存系统数据表和对象,而用户的数据和对象则另设一个或多个次要数据文件来储存。●为了得到最佳的效能,尽可能将文件和文件组跨多个实体磁盘建立,以利用到最多数量的平行磁盘I/O。5.1SQLServer数据库基础知识4.文件自动成长在数据库使用过程中,随着数据量的增多,文件建立时的设定初始大小,就可能满足不了需求。SQLServer允许用户设置数据库文件可以根据需要自动成长,这样能减少管理员手动监控和增加文件空间的负担。SQLServer文件空间的自动成长量也可称为“成长递增值(growthincrement)”。设置文件自动成长后,系统会在新的空间填满时,再次分配新的成长递增值。5.1SQLServer数据库基础知识数据文件的增量可以直到磁盘已满或达到最大文件尺寸为止(如果有指定的话)。提示:文件自动成长不同于根据比例写入的方式。文件自动成长是指当文件填满时,SQLServer将自动增加文件空间;而按比例写入是指SQLServer根据文件的剩余空间,将数据根据比例存放,而不增长文件的空间。5.1SQLServer数据库基础知识文件所能成长到的最大尺寸,是文件建立时指定的。用户可使用SQLServerManagementStudio或ALTERDATABASE命令,更改最大文件尺寸的值。如果没有设定文件的最大尺寸,SQLServer可让文件根据需要成长,直到磁盘空间用完为止,磁盘驱动器出现空间不足,导致SQLServer错误。为此,用户应该为每一个文件设定最大尺寸。5.1SQLServer数据库基础知识当建立数据库时,将文件设定到可能会成长到的最大尺寸。虽然文件的成长可设成根据需要自动成长,但仍建议用户定期监控文件的成长,这样可帮助用户预估文件未来的成长,并决定是否应修改数据库以增加更多的文件空间。5.1SQLServer数据库基础知识5.系统数据库当用户安装SQLServer2005后,将会建立相关系统数据库(系统数据库数量的多少,取决于系统安装的选项以及后期配置的情况而定)。主要的系统数据库有:master、tempdb、model、msdb和资源数据库。5.1SQLServer数据库基础知识(1)master数据库master数据库记录SQLServer系统的所有系统级信息,包括实例范围的元数据(例如登录账户)、端点、链接服务器和系统配置设置。此外,master数据库还记录了所有其他数据库的存在、数据库文件的位置以及SQLServer的初始化信息。因此,如果master数据库不可用,则SQLServer无法启动。5.1SQLServer数据库基础知识在SQLServer2005中,系统对象不再存储在master数据库中,而是存储在Resource数据库中。master数据库中数据和日志文件的初始配置值,见表5-1。不同版本的SQLServer2005,这些文件的大小可能略有不同。表5-1master数据库的初始配值文件逻辑名称物理名称文件增长主数据mastermaster.mdf以10%的速度自动增长到磁盘充满为止。Logmastlogmastlog.ldf以10%的速度自动增长到最大2TB。5.1SQLServer数据库基础知识在master数据库中不能执行的操作包括:–添加文件或文件组;–更改排序规则(默认排序规则为服务器排序规则);–更改数据库所有者;创建全文目录或全文索引;–在数据库的系统表上创建触发器;删除数据库;–从数据库中删除guest用户;参与数据库镜像;–删除主文件组、主数据文件或日志文件;–重命名数据库或主文件组;–将数据库设置为OFFLINE;–将数据库或主文件组设置为READ_ONLY。5.1SQLServer数据库基础知识使用master数据库时,请考虑以下建议:●始终有一个master数据库的当前备份可用。●执行下列操作后,尽快备份master数据库:创建、修改或删除任意数据库;更改服务器或数据库的配置值;修改或添加登录帐户。●不要在master中创建用户对象。否则,必须更频繁地备份master。●不要针对master数据库将TRUSTWORTHY选项设置为ON。5.1SQLServer数据库基础知识(2)model数据库model数据库用作在SQLServer实例上创建的所有数据库的模板。因为每次启动SQLServer时都会创建tempdb,model数据库必须始终存在于SQLServer系统中。特别注意:此功能与早期版本的SQLServer有所不同。model的使用方法:当使用CREATEDATABASE语句时,将通过复制model数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分。5.1SQLServer数据库基础知识如果修改model数据库,之后创建的所有数据库都将继承这些修改。例如,可以设置权限或数据库选项或者添加对象,例如,表、函数或存储过程。model数据库中数据和日志文件的初始配置值,见表5-2。不同版本的SQLServer2005,这些文件的大小可能略有不同。5.1SQLServer数据库基础知识表5-2model数据库的初始配值文件逻辑名称物理名称文件增长主数据modeldevmodel.mdf以10%的速度自动增长到磁盘充满为止Logmodellogmodellog.ldf以10%的速度自动增长到最大2TB5.1SQLServer数据库基础知识在model数据库中不能执行的操作包括:–添加文件或文件组;–更改排序规则(默认排序规则为服务器排序规则);–更改数据库所有者;–删除数据库;–从数据库中删除guest用户;–参与数据库镜像;–删除主文件组、主数据文件或日志文件;–重命名数据库或主文件组;–将数据库设置为OFFLINE;–将数据库或主文件组设置为READ_ONLY。5.1SQLServer数据库基础知识(3)msdb数据库msdb数据库由SQLServer代理用于计划警报和作业,也可以由其他功能(如ServiceBroker和数据库邮件)使用。msdb数据库中数据和日志文件的初始配置值,见表5-3。表5-3msdb数据库的初始配值文件逻辑名称物理名称文件增长主数据MSDBDataMSDBData.mdf以256KB的速度自动增长到磁盘充满为止。LogMSDBLogMSDBLog.ldf以256KB的速度自动增长到最大2TB。5.1SQLServer数据库基础知识不同版本的SQLServer2005数据库引擎,这些文件的大小可能略有不同。在msdb数据库中不能执行的操作包括:–更改排序规则(默认排序规则为服务器排序规则);–删除数据库;–从数据库