《第四章数据库管理课件.ppt》由会员分享,可在线阅读,更多相关《第四章数据库管理课件.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章 数据库管理n n4.1 数据库的存储结构n n4.2 创建、修改和删除数据库数据库的存储结构 n n数据库的存储结构分为逻辑存储结构和物理存储结构两种。n n数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成。实际上,SQL Server的数据库是由诸如表、视图、索引等各种不同的数据库对象所组成。n n数据库的物理存储结构是讨论数据库文件是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。数据库文件n n当建立一个当建立一个SQL ServerSQL Server数据库时,数据库的实际存
2、数据库时,数据库的实际存储被映射成几个操作系统文件。三种类型的储被映射成几个操作系统文件。三种类型的SQL SQL ServerServer数据库文件:数据库文件:n n主数据库文件(主数据库文件(.mdf.mdf)n n辅数据库文件辅数据库文件 (.ndf.ndf)n n日志文件日志文件 (.ldf.ldf)n n每个文件有两个互相联系的名字每个文件有两个互相联系的名字 n n逻辑名逻辑名n n物理名物理名 数据库文件(续)n n逻辑存储结构和物理存储结构逻辑存储结构和物理存储结构n n一、数据库的逻辑存储结构指的是数据库是由哪一、数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成,些
3、性质的信息所组成,SQL ServerSQL Server的数据库不仅的数据库不仅仅只是数据的存储,所有与数据处理操作相关的仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中。信息都存储在数据库中。n n二、数据库的物理存储结构则是讨论数据库文件二、数据库的物理存储结构则是讨论数据库文件是如何在磁盘上存储的,数据库在磁盘上是以文是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。和一个事务日志文件。数据库的
4、存储结构-物理存储结构n n数据库文件 n n1主数据库文件(Primary Database File)n n一个数据库可以有一个或多个数据库文件,一个数据库文件只能属于一个数据库。当有多个数据库文件时,有一个文件被定义为主数据库文件(简称为主文件),其扩展名为mdf。3.1 数据库的存储结构n n主数据库文件用来存储数据库的启动信息以及部分或者全部数据,是所有数据库文件的起点,包含指向其它数据库文件的指针。一个数据库只能有一个主数据库文件。数据库的存储结构n n2辅助数据库文件(Secondary Database File)n n用于存储主数据库文件中未存储的剩余数据和数据库对象,一个数
5、据库可以没有辅助数据库文件,但也可以同时拥有多个辅助数据库文件。n n辅助数据库文件的扩展名为ndf(简称为辅助文件)。数据库的存储结构n n3事务日志文件 n n存储数据库的更新情况等事务日志信息,当数据库损坏时,管理员使用事务日志恢复数据库。n n每一个数据库至少必须拥有一个事务日志文件,而且允许拥有多个日志文件。事务日志文件的扩展名为ldf,日志文件的大小至少是512KB。n nSQL Server事务日志采用提前写入的方式。n nSQL Server使用数据库的事务日志来防止没有完成的事务破坏数据。数据库的存储结构n n注意:SQL Server 2000中的数据和事务日志文件不能存放
6、在压缩文件系统或象共享网络目录等远程的网络驱动器上。n nSQL Server 2000的文件拥有两个名称,即逻辑文件名和物理文件名。当使用Transact-SQL命令语句访问某一个文件时,必须使用该文件的逻辑名。n n物理文件名是文件实际存储在磁盘上的文件名,而且可包含完整的磁盘目录路径。数据库文件组文件组n n文件组的主要目的是为了方便管理和空间分配。文件组的主要目的是为了方便管理和空间分配。n n在建立文件组时,有三条规则:在建立文件组时,有三条规则:n n数据库文件不能与一个以上的文件组关联。数据库文件不能与一个以上的文件组关联。n n日志文件不能加到文件组里。日志文件不能加到文件组里
7、。n n只有文件组中任何一个文件都没有空间了,文件组的只有文件组中任何一个文件都没有空间了,文件组的文件才会自动增长文件才会自动增长 。n n三种不同类型的文件组三种不同类型的文件组n n主类型主类型(PRIMARY)(PRIMARY)n n用户定义型用户定义型n n缺省型缺省型 数据库的存储结构n n数据库文件组 n n利用文件组可以使服务器的性能得到提高。n n主文件组中包含了所有的系统表,当建立数据库时,主文件组包括主数据库文件和未指定组的其他文件。n n用户定义文件组中可以指定一个缺省文件组,那么在创建数据库对象时如果没有指定将其放在哪一个文件组中,就会将它放在缺省文件组中。如果没有指
8、定缺省文件组,则主文件组为缺省文件组。数据库的存储结构n n一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用;日志文件是独立的,它不能作为任何文件组的成员。4.1.1 页面页面逻辑存储结构逻辑存储结构 1、什么是页面?n nSQL ServerSQL Server中的所有信息都存储在页面(中的所有信息都存储在页面(pagepage)上,页面是数据库中使用的最小数据单元。上,页面是数据库中使用的最小数据单元。n n每一个页面存储每一个页面存储8KB8KB(81928192字节)的信息。字节)的信息。n n所有的页面都包括一个所有的页面都包括一个132132字节的页面头,用来字节的
9、页面头,用来唯一地标识存储在页面中的数据,留下唯一地标识存储在页面中的数据,留下8060 8060 字字节存储数据。节存储数据。n n每页可以包含至少一行,但一行不能超出一页的每页可以包含至少一行,但一行不能超出一页的长度。每页只能存储一个表中的数据。长度。每页只能存储一个表中的数据。页面(续)页面(续)2 2、SQL ServerSQL Server使用页面的类型使用页面的类型 n n分配页面:用于控制数据库中给表和索引分配的页面。分配页面:用于控制数据库中给表和索引分配的页面。n n数据和日志页面:数据和日志页面:用于存储数据库数据和事务日志数据。数据存储在每个用于存储数据库数据和事务日志
10、数据。数据存储在每个页面的数据行中。每一行大小的最大值为页面的数据行中。每一行大小的最大值为80608060个字节。个字节。SQL ServerSQL Server不允许记录跨页面存储。不允许记录跨页面存储。n n索引页面:用于存储数据库的索引数据。索引页面:用于存储数据库的索引数据。n n分发页面:用于存储数据库中有关索引的信息。分发页面:用于存储数据库中有关索引的信息。n n文本文本 /图像页面:用于存储大量的文本或二进制大对象图像页面:用于存储大量的文本或二进制大对象(BLOBBLOB)。)。4.1.2 盘区盘区 1 1、什么是盘区?、什么是盘区?n n盘区是盘区是SQL ServerS
11、QL Server每次申请空间时能分配的最小单位。每次申请空间时能分配的最小单位。n n一个盘区(一个盘区(extent extent)是由)是由8 8个连续的页面个连续的页面(88KB=64KB88KB=64KB)组成的数据结构。)组成的数据结构。n n当创建一个数据库对象(如一个表)时,当创建一个数据库对象(如一个表)时,SQL Server SQL Server会自动地以盘区为单位给它分配空间。会自动地以盘区为单位给它分配空间。n n每一个盘区只能包含一个数据库对象。每一个盘区只能包含一个数据库对象。n n盘区是表和索引分配空间的单位。盘区是表和索引分配空间的单位。n n假设我们在一个新
12、建的数据库中,创建了一个表和两假设我们在一个新建的数据库中,创建了一个表和两个索引,并且表中只插入了一条记录,那么,总共占个索引,并且表中只插入了一条记录,那么,总共占用用364KB=192KB364KB=192KB空间。空间。盘区(续)盘区(续)2、SQL Server使用的盘区的种类n n混合型混合型一个混合型区域有一个混合型区域有64KB64KB,其中的页可以组,其中的页可以组成成8 8个不同的对象。个不同的对象。n n统一型统一型一个统一型区域有一个统一型区域有64KB64KB,其中所有的页必,其中所有的页必须属于同一个对象。须属于同一个对象。当你第一次建立一个数据库对象时,当你第一次
13、建立一个数据库对象时,SQL Server SQL Server在在一个混合型区域中为它分配空间。如果这个对象增长到一个混合型区域中为它分配空间。如果这个对象增长到包含包含8 8个页或更多时,个页或更多时,SQL ServerSQL Server便会将现有数据移到一便会将现有数据移到一个统一型区域中。个统一型区域中。4.2 创建、修改和删除数据库n n4.2.1 4.2.1 创建数据库创建数据库 n n4.2.2 4.2.2 设置数据库选项设置数据库选项n n4.2.3 4.2.3 修改数据库修改数据库 n n4.2.4 4.2.4 删除数据库删除数据库 4.2.1 创建数据库n n每个数据库
14、都由以下几个部分的数据库对象所组成:关系图、表、视图、存储过程、用户、角色、规则、默认、用户自定义数据类型和用户自定义函数。估算数据库的空间需求n n数据库管理员的主要任务之一是创建数据库,并且需要为每个文件指定容量。准确地估算应有的容量以免浪费不必占用的资源或者用尽数据库的空间是数据库管理员的责任。考虑因素n n 每行记录的大小。每行记录都由一列或者多列数据组成。这些列决每行记录的大小。每行记录都由一列或者多列数据组成。这些列决定了每一行的大小,必须从数据库开发人员那里或者通过自行检查数定了每一行的大小,必须从数据库开发人员那里或者通过自行检查数据库中的每个表得到每一行的大小。据库中的每个表
15、得到每一行的大小。n n 记录的数量。表中的记录数有可能基本不变,也有可能变化相当大。记录的数量。表中的记录数有可能基本不变,也有可能变化相当大。数据库开发人员可以告诉你数据库中的每个表预计存储多少条数据。数据库开发人员可以告诉你数据库中的每个表预计存储多少条数据。n n 表的数量。一些数据库只有少量的表,另一些却有可能有成百上千表的数量。一些数据库只有少量的表,另一些却有可能有成百上千的表。你可以使用企业管理器自行查看表的数量。的表。你可以使用企业管理器自行查看表的数量。n n 索引的数量。每个表都有一个或者多个索引,这些索引可能是聚簇索引的数量。每个表都有一个或者多个索引,这些索引可能是聚
16、簇式索引或者是非簇式索引。每个非簇式索引将在数据库中占用额外的式索引或者是非簇式索引。每个非簇式索引将在数据库中占用额外的空间。空间。n n 每个索引的大小。索引的大小取决于使用该索引的列的大小、索引每个索引的大小。索引的大小取决于使用该索引的列的大小、索引中包含的记录数量和索引的填充因子。填充因子越大,索引对象占用中包含的记录数量和索引的填充因子。填充因子越大,索引对象占用的空间就越多。的空间就越多。n n 数据库对象的数量和大小。数据库包含很多对象,例如触发器、视数据库对象的数量和大小。数据库包含很多对象,例如触发器、视图、存储过程等等。图、存储过程等等。考虑因素n n 事务日志的大小。事
17、务日志大小的差别很大。这取决于事务日志的大小。事务日志大小的差别很大。这取决于很多因素,其中包括数据库中的数据的修改频率。大多数很多因素,其中包括数据库中的数据的修改频率。大多数事务日志以数据库容量的事务日志以数据库容量的1 0%1 0%到到2 5%2 5%为起点,在数据为起点,在数据库被用于实际工作环境后再通过监控来调整。经验显示,库被用于实际工作环境后再通过监控来调整。经验显示,经常被修改的数据库和很少被修改的数经常被修改的数据库和很少被修改的数n n据库相比需要更大的事务日志。越是经常备份,事务日志据库相比需要更大的事务日志。越是经常备份,事务日志就越是可以小一些,这是因为在每次备份过程
18、中都会截断就越是可以小一些,这是因为在每次备份过程中都会截断事务日志。事务日志。n n 数据库的计划成长量。有一些数据库的容量从不增长,数据库的计划成长量。有一些数据库的容量从不增长,也有一些每周都大幅度地增长。为了确定总体的计划成长也有一些每周都大幅度地增长。为了确定总体的计划成长量,你必须估算数据库中每个表的成长量。量,你必须估算数据库中每个表的成长量。估算公式n n其中,行的长度,就是指一行的字节数。创建新数据库的注意事项创建新数据库的注意事项n n缺省情况下只有系统管理员可以创建新数据库缺省情况下只有系统管理员可以创建新数据库n n给数据库指定名字必须遵循给数据库指定名字必须遵循SQL
19、 ServerSQL Server命名规范命名规范 n n所有的新数据库都是所有的新数据库都是modelmodel数据库的拷贝数据库的拷贝 n n单个数据库可以存储在单个文件上,也可以跨越单个数据库可以存储在单个文件上,也可以跨越多个文件存储多个文件存储 n n数据库的大小可以被扩展或者收缩数据库的大小可以被扩展或者收缩 n n当新的数据库创建时,当新的数据库创建时,SQL Server SQL Server自动地更新自动地更新“mastermaster”数据库的数据库的“sysdatabasessysdatabases”系统表系统表 n n在SQL Server中创建数据库时,在创建新数据库
20、之前,首先创建两个文件:一个用于数据库,另外一个用于事务日志。考虑在数据库使用的文件的逻辑名上加n n入“data”这个词,在事务日志使用的文件的逻辑名上加入“log”这个词(例如n n“marketing_data”和“marketing_log”)。创建新数据库的注意事项n n1)1)缺省情况下,只有系统管理员可以创建新数据库。缺省情况下,只有系统管理员可以创建新数据库。n n2)2)给数据库指定的名字必须遵循给数据库指定的名字必须遵循SQL ServerSQL Server命名规范:命名规范:n n 字符的长度可以从字符的长度可以从1 1到到3 03 0。n n 名称的第一个字符必须是一
21、个字母或者是下列字符中的名称的第一个字符必须是一个字母或者是下列字符中的某一个:下划线(某一个:下划线(_ _),),a ta t符号(符号(),或者是英镑符号),或者是英镑符号(#)。)。n n 在首字母后的字符可以是字母、数字或者前面规则中提在首字母后的字符可以是字母、数字或者前面规则中提到的符号。到的符号。n n 名称当中不能有任何空格,除非将名字用引号引起来。名称当中不能有任何空格,除非将名字用引号引起来。创建新数据库的注意事项n n3)所有的新数据库都是model数据库的拷贝。这意味着新数据库不可能比model数据库当前的容量更小。n n4)单个数据库可以存储在单个文件上,也可以跨越
22、多个文件存储。n n5)数据库的大小可以被扩展或者收缩。n n6)当新的数据库创建时,SQL Server自动地更新“master”数据库的“sysdatabases”系统表。创建数据库的方法 使用向导创建数据库使用企业管理器(Enterprise Manager)创建数据库使用Transact-SQL语言创建数据库。使用企业管理器创建数据库n n该使用企业管理器来创建和管理数据库。这个图形化用户界面比Transact-SQL语句或者系统存储过程更容易使用。步骤-创建名为M Y D B的数据库n n1)1)在企业管理器的主界面中选择一个在企业管理器的主界面中选择一个SQL ServerSQL
23、Server,单击这个服务器旁,单击这个服务器旁边的加号打开这个文件夹,出现各个边的加号打开这个文件夹,出现各个SQL ServerSQL Server文件夹。文件夹。n n2)2)单击单击DatabasesDatabases旁的加号,打开这个文件夹,出现这个旁的加号,打开这个文件夹,出现这个SQL ServerSQL Server上当前所有数据库的列表(见图上当前所有数据库的列表(见图5-35-3)n n3)3)右击右击D a t a b a s e sD a t a b a s e s文件夹,从菜单中选择文件夹,从菜单中选择New DatabaseNew Database,出现,出现Dat
24、abase PropertiesDatabase Properties对话框(见图对话框(见图5-45-4)。)。n n4)4)在在NameName一栏中输入新建数据库的名字,如:一栏中输入新建数据库的名字,如:MYDB MYDB。确保遵循了。确保遵循了SQL ServerSQL Server的命名规范标准。的命名规范标准。n n5)5)在在File nameFile name一栏中可以输入数据文件的逻辑名。一栏中可以输入数据文件的逻辑名。缺省情况下,系统自动产生缺省情况下,系统自动产生“数据库名数据库名_ Data”_ Data”的的数据文件,你可以修改这个名字。而且,你可以数据文件,你可以
25、修改这个名字。而且,你可以输入多个文件。输入多个文件。n n6)6)在在LocationLocation中可以指定数据文件所在的位置。中可以指定数据文件所在的位置。缺省情况下,是安装缺省情况下,是安装SQL ServerSQL Server的目录的的目录的DataData子子目录下。你可以修改它。目录下。你可以修改它。n n7)7)在在Initial sizeInitial size一栏中以兆为单位输入数据文件的一栏中以兆为单位输入数据文件的初始容量。值得注意的是,数据文件必须以初始容量。值得注意的是,数据文件必须以1 M1 M的的整倍数来创建,所以在这里你必须输入一个整数。整倍数来创建,所以
26、在这里你必须输入一个整数。n n8)8)在该页的下面,你可以选择在该页的下面,你可以选择Automatically grow fileAutomatically grow file,指明:如果数据库的数据容量超过了数据文件的大小,数指明:如果数据库的数据容量超过了数据文件的大小,数据文件可以自动增加。你可以指定按照百分比增加(选择据文件可以自动增加。你可以指定按照百分比增加(选择By percentBy percent后输入百分数),或者指定按照大小增加(选后输入百分数),或者指定按照大小增加(选择择In megabytesIn megabytes后输入大小)。你还可以指定:增加是否后输入大小
27、)。你还可以指定:增加是否有上限。如果想指定上限,可以选择有上限。如果想指定上限,可以选择Restrict filegrowthRestrict filegrowth并并输入上限的大小;如果不想指定上限,可以选择输入上限的大小;如果不想指定上限,可以选择Unrestricted filegrowthUnrestricted filegrowth。n n9)9)在在Transaction LogTransaction Log页中,输入日志文件的名称和大小。页中,输入日志文件的名称和大小。n n10)10)单击单击“确定确定”按钮立即创建数据库。按钮立即创建数据库。n n如果你选择如果你选择“确定
28、确定”,这个数据库就会立即创建。,这个数据库就会立即创建。SQL SQL ServerServer不会返回任何有关创建的状态的信息。你可以通过不会返回任何有关创建的状态的信息。你可以通过在企业管理器的主界面中查看在企业管理器的主界面中查看DatabasesDatabases文件夹下是否包文件夹下是否包含新建的数据库来验证创建工作成功与否。含新建的数据库来验证创建工作成功与否。(一)使用向导创建数据库n n以下图4-1 到图4-8是使用向导创建数据库,用户根据提示操作,即可创建数据库。图图4-1 选选择择向向导导对对话话框框图图4-2 欢迎使用创建数据库向导对话框欢迎使用创建数据库向导对话框 图
29、图4-3 输入数据库名称和文件位置对话框输入数据库名称和文件位置对话框 图图4-4 定义数据库文件逻辑名称及初始大小对话话框定义数据库文件逻辑名称及初始大小对话话框图图4-5 定义数据库增长信息对话框定义数据库增长信息对话框 图图4-6 定义事务日志文件名称及初始大小对话框定义事务日志文件名称及初始大小对话框 图图4-7 定义事务日志文件增长信息对话框定义事务日志文件增长信息对话框 图图4-8 确认创建数据库对话框确认创建数据库对话框(3)使用Transact-SQL语言创建数据库,语法如下:n nCREATE DATABASE database_nameCREATE DATABASE dat
30、abase_namen nON PRIMARY ON PRIMARY ,n n ,n n n n LOG ON LOG ON ,nnn n FOR RESTORE FOR RESTOREn n:=(NAME=logical_file_name:=(NAME=logical_file_name,n nFILENAME=FILENAME=os_file_nameos_file_name n n,SIZE=sizeSIZE=sizen n,MAXSIZE=max_size|UNLIMITEDMAXSIZE=max_size|UNLIMITEDn n,FILEGROWTH=growth_increme
31、nt)FILEGROWTH=growth_increment),nnn n:=FILEGROUP filegroup_name:=FILEGROUP filegroup_name ,nndatabase_namedatabase_name:数据库的名称,最长为数据库的名称,最长为128128个字符。个字符。PRIMARYPRIMARY:该选项是一个关键字,指定主文该选项是一个关键字,指定主文件组中的文件。件组中的文件。LOG ONLOG ON:指明事务日志文件的明确定义。指明事务日志文件的明确定义。NAMENAME:指定数据库的逻辑名称,这是在指定数据库的逻辑名称,这是在SQL SQL Ser
32、verServer系统中使用的名称,是数据库在系统中使用的名称,是数据库在SQL SQL ServerServer中的标识符。中的标识符。各参数说明如下:各参数说明如下:FILENAMEFILENAME:指定数据库所在文件的操作指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名系统文件名称和路径,该操作系统文件名和和NAMENAME的逻辑名称一一对应。的逻辑名称一一对应。SIZESIZE:指定数据库的初始容量大小。指定数据库的初始容量大小。MAXSIZEMAXSIZE:指定操作系统文件可以增长到指定操作系统文件可以增长到的最大尺寸。的最大尺寸。FILEGROWTHFILEGROWTH
33、:指定文件每次增加容量的指定文件每次增加容量的大小,当指定数据为大小,当指定数据为0 0时,表示文件不增时,表示文件不增长长。例子4-1:创建了一个Company数据库 n n创建了一个创建了一个CompanyCompany数据库,该数据库的主数数据库,该数据库的主数据文件逻辑名称为据文件逻辑名称为Company_dataCompany_data,物理文件名,物理文件名为为Company.mdfCompany.mdf,初始大小为,初始大小为10MB10MB,最大尺寸,最大尺寸为无限大,增长速度为为无限大,增长速度为10%10%;数据库的日志文;数据库的日志文件逻辑名称为件逻辑名称为Compan
34、y_logCompany_log,物理文件名为,物理文件名为Company.ldfCompany.ldf,初始大小为,初始大小为1MB1MB,最大尺寸为,最大尺寸为5MB5MB,增长速度为,增长速度为1MB1MB。n n程序清单:程序清单:create database companycreate database companyon primaryon primary(name=company_data,(name=company_data,filename=d:mssql7datacompany.mdf,filename=d:mssql7datacompany.mdf,size=10,si
35、ze=10,maxsize=unlimited,maxsize=unlimited,filegrowth=10%)filegrowth=10%)log onlog on(name=company_log,(name=company_log,filename=d:mssql7datacompany.ldf,filename=d:mssql7datacompany.ldf,size=1,size=1,maxsize=5,maxsize=5,filegrowth=1)filegrowth=1)n n输出为:输出为:输出为:输出为:The CREATE DATABASE process is allo
36、cating 10.00 MB on disk The CREATE DATABASE process is allocating 10.00 MB on disk company_pany_data.The CREATE DATABASE process is allocating 1.00 MB on disk The CREATE DATABASE process is allocating 1.00 MB on disk company_pany_log.例子4-2:创建一个指定多个数据文件和日志文件的数据库 n n该数据库名称为该数据库名称为该数据库名称为该数据库名称为employe
37、esemployeesemployeesemployees,有,有,有,有1 1 1 1个个个个10MB10MB10MB10MB和和和和1 1 1 1个个个个20MB20MB20MB20MB的数据的数据的数据的数据文件和文件和文件和文件和2 2 2 2个个个个10MB10MB10MB10MB的事务日志文件。数据文件逻辑名称为的事务日志文件。数据文件逻辑名称为的事务日志文件。数据文件逻辑名称为的事务日志文件。数据文件逻辑名称为employee1employee1employee1employee1和和和和employee2employee2employee2employee2,物理文件名为,物理
38、文件名为,物理文件名为,物理文件名为employee1.mdfemployee1.mdfemployee1.mdfemployee1.mdf和和和和employee2.mdfemployee2.mdfemployee2.mdfemployee2.mdf。主文件是。主文件是。主文件是。主文件是employee1employee1employee1employee1,由,由,由,由primaryprimaryprimaryprimary指定,指定,指定,指定,两个数据文件的最大尺寸分别为无限大和两个数据文件的最大尺寸分别为无限大和两个数据文件的最大尺寸分别为无限大和两个数据文件的最大尺寸分别为无限
39、大和100MB100MB100MB100MB,增长速,增长速,增长速,增长速度分别为度分别为度分别为度分别为10%10%10%10%和和和和1MB1MB1MB1MB。事务日志文件的逻辑名为。事务日志文件的逻辑名为。事务日志文件的逻辑名为。事务日志文件的逻辑名为employeelog1employeelog1employeelog1employeelog1和和和和employeelog2employeelog2employeelog2employeelog2,物理文件名为,物理文件名为,物理文件名为,物理文件名为employeelog1.ldfemployeelog1.ldfemployeelo
40、g1.ldfemployeelog1.ldf和和和和employeelog2.ldfemployeelog2.ldfemployeelog2.ldfemployeelog2.ldf,最大尺寸均为,最大尺寸均为,最大尺寸均为,最大尺寸均为50MB50MB50MB50MB,文件增长速度为,文件增长速度为,文件增长速度为,文件增长速度为1MB1MB1MB1MB。n n其源程序为:其源程序为:其源程序为:其源程序为:create database employeescreate database employeeson primaryon primary(name=employee1,(name=em
41、ployee1,filename=d:mssql7data employee1.mdf,filename=d:mssql7data employee1.mdf,size=10,maxsize=unlimited,filegrowth=10%),size=10,maxsize=unlimited,filegrowth=10%),(name=employee2,(name=employee2,filename=d:mssql7data employee2.mdf,filename=d:mssql7data employee2.mdf,size=20,maxsize=100,filegrowth=1
42、)size=20,maxsize=100,filegrowth=1)log on log on(name=employeelog1,(name=employeelog1,filename=d:mssql7data employeelog1.ldf,filename=d:mssql7data employeelog1.ldf,size=10,maxsize=50,filegrowth=1),size=10,maxsize=50,filegrowth=1),(name=employeelog2,(name=employeelog2,filename=d:mssql7data employeelog
43、2.ldf,filename=d:mssql7data employeelog2.ldf,size=10,maxsize=50,filegrowth=1)size=10,maxsize=50,filegrowth=1)n n输出结果为:输出结果为:输出结果为:输出结果为:The CREATE DATABASE process is allocating 10.00 MB on disk employee1.The CREATE DATABASE process is allocating 10.00 MB on disk employee1.The CREATE DATABASE proces
44、s is allocating 20.00 MB on disk employee2.The CREATE DATABASE process is allocating 20.00 MB on disk employee2.The CREATE DATABASE process is allocating 10.00 MB on disk The CREATE DATABASE process is allocating 10.00 MB on disk employeelog1.employeelog1.The CREATE DATABASE process is allocating 10
45、.00 MB on disk The CREATE DATABASE process is allocating 10.00 MB on disk employeelog2.employeelog2.4.2.2 设置数据库选项设置数据库选项n n数据库选项:用来控制一个数据库的默认数据库选项:用来控制一个数据库的默认行为,这些设置将从模型数据库中继承过行为,这些设置将从模型数据库中继承过来,来,选项影响着这个数据库的工作方式。n n使用使用SQL Enterprise ManagerSQL Enterprise Manager设置数据库设置数据库选项选项 n n通过通过“sp_dboption
46、”“sp_dboption”系统存储过程来修改系统存储过程来修改数据库选项数据库选项n n每个数据库的选项都是与其他数据库分离设置的。部分数据库选项n n每一个选项在缺省的情况下都是被关闭的。每一个选项在缺省的情况下都是被关闭的。n n ANSI Null Default ANSI Null Default:这个选项决定了表中的列在缺省的:这个选项决定了表中的列在缺省的情况下被设置为情况下被设置为“NULL”“NULL”(允许为空)还是(允许为空)还是“NOT NULL”“NOT NULL”(不允许为空)。打开这个选项会使(不允许为空)。打开这个选项会使Microsoft SQL Server
47、Microsoft SQL Server的数据库与的数据库与ANSIANSI标准兼容。标准兼容。n n DBO Use Only DBO Use Only:如果打开这个选项,将只允许数据库属:如果打开这个选项,将只允许数据库属主(主(DBO DBO)访问这个数据库。如果在用户访问这个数据)访问这个数据库。如果在用户访问这个数据库的期间打开了这个选项,这个用户仍旧可以继续访问这库的期间打开了这个选项,这个用户仍旧可以继续访问这个数据库,但是新的用户不能登录访问这个数据库。个数据库,但是新的用户不能登录访问这个数据库。n n Read Only Read Only:如果这个选项被打开,这个数据库就
48、处于只:如果这个选项被打开,这个数据库就处于只读状态。这样用户就不能修改数据库中的任何记录。读状态。这样用户就不能修改数据库中的任何记录。n n Select Into/Bulk Copy Select Into/Bulk Copy:在数据库中执行不记日志的操作:在数据库中执行不记日志的操作之前必须设置这个选项。一个不记日志的操作会忽略事务之前必须设置这个选项。一个不记日志的操作会忽略事务日志而直接修改数据库中的内容。日志而直接修改数据库中的内容。部分数据库选项n n Single User Single User:这个选项被设置时,每一时刻只:这个选项被设置时,每一时刻只有一个用户可以访问这
49、个数据库。但是这个用户有一个用户可以访问这个数据库。但是这个用户并不限于并不限于sasa或者或者dbodbo,因此任何首先访问该数据库,因此任何首先访问该数据库的用户就是这个唯一允许访问数据库的用户。打的用户就是这个唯一允许访问数据库的用户。打开这个选项将取消数据库中的所有锁,这是因为开这个选项将取消数据库中的所有锁,这是因为数据库中只有一个用户,所以没有必要加任何锁。数据库中只有一个用户,所以没有必要加任何锁。n n Truncate Log on Checkpoint Truncate Log on Checkpoint:这个选项打开以:这个选项打开以后,在每一次检查点发生时都会将非活动事
50、务从后,在每一次检查点发生时都会将非活动事务从事务日志中清除。事务日志通常只有在手工截断事务日志中清除。事务日志通常只有在手工截断日志或者备份事务日志时才会被截断。日志或者备份事务日志时才会被截断。存储过程sp_dboption的语法 n nsp_dboption sp_dboption,n n例子例子USE masterUSE masterEXEC sp_dboption library,trunc.log on chkpt.,trueEXEC sp_dboption library,trunc.log on chkpt.,trueGOGOn n3)3)执行这个语句。在执行这个语句。在“Re