资源预览内容
第1页 / 共71页
第2页 / 共71页
第3页 / 共71页
第4页 / 共71页
第5页 / 共71页
第6页 / 共71页
第7页 / 共71页
第8页 / 共71页
第9页 / 共71页
第10页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章 数据库管理n n4.1 数据库的存储结构n n4.2 创建、修改和删除数据库数据库的存储结构 n n数据库的存储结构分为逻辑存储结构和物理存储结构两种。 n n数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成 。实际上,SQL Server的数据库是由诸如表、视图、索引等各种不同的数据库对象所组成。n n数据库的物理存储结构是讨论数据库文件是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。 数据库文件n n当建立一个当建立一个SQL ServerSQL Server数据库时,数据库的实际存数据库时,数据库的实际存储被映射成几个操作系统文件。三种类型的储被映射成几个操作系统文件。三种类型的SQL SQL ServerServer数据库文件:数据库文件:n n主数据库文件(主数据库文件(. .mdfmdf)n n辅数据库文件辅数据库文件 (. .ndfndf)n n日志文件日志文件 (. .ldfldf )n n每个文件有两个互相联系的名字每个文件有两个互相联系的名字 n n逻辑名逻辑名n n物理名物理名 数据库文件 (续)n n逻辑存储结构和物理存储结构逻辑存储结构和物理存储结构n n一、数据库的逻辑存储结构指的是数据库是由哪一、数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成,些性质的信息所组成,SQL ServerSQL Server的数据库不仅的数据库不仅仅只是数据的存储,所有与数据处理操作相关的仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中。信息都存储在数据库中。 n n二、数据库的物理存储结构则是讨论数据库文件二、数据库的物理存储结构则是讨论数据库文件是如何在磁盘上存储的,数据库在磁盘上是以文是如何在磁盘上存储的,数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据库文件组成,一个数据库至少应该包含一个数据库文件和一个事务日志文件。和一个事务日志文件。数据库的存储结构-物理存储结构n n数据库文件 n n1主数据库文件(Primary Database File) n n一个数据库可以有一个或多个数据库文件,一个数据库文件只能属于一个数据库。当有多个数据库文件时,有一个文件被定义为主数据库文件(简称为主文件),其扩展名为mdf。3.1 数据库的存储结构n n主数据库文件用来存储数据库的启动信息以及部分或者全部数据,是所有数据库文件的起点,包含指向其它数据库文件的指针。一个数据库只能有一个主数据库文件。 数据库的存储结构n n2辅助数据库文件(Secondary Database File) n n用于存储主数据库文件中未存储的剩余数据和数据库对象,一个数据库可以没有辅助数据库文件,但也可以同时拥有多个辅助数据库文件。 n n辅助数据库文件的扩展名为ndf(简称为辅助文件)。 数据库的存储结构n n3事务日志文件 n n存储数据库的更新情况等事务日志信息 ,当数据库损坏时,管理员使用事务日志恢复数据库。n n每一个数据库至少必须拥有一个事务日志文件,而且允许拥有多个日志文件。事务日志文件的扩展名为ldf,日志文件的大小至少是512KB。 n nSQL Server事务日志采用提前写入的方式 。n nSQL Server使用数据库的事务日志来防止没有完成的事务破坏数据。数据库的存储结构n n注意:SQL Server 2000中的数据和事务日志文件不能存放在压缩文件系统或象共享网络目录等远程的网络驱动器上。 n nSQL Server 2000的文件拥有两个名称,即逻辑文件名和物理文件名。当使用Transact-SQL命令语句访问某一个文件时,必须使用该文件的逻辑名 。n n物理文件名是文件实际存储在磁盘上的文件名,而且可包含完整的磁盘目录路径。 数据库文件组文件组n n文件组的主要目的是为了方便管理和空间分配。文件组的主要目的是为了方便管理和空间分配。 n n在建立文件组时,有三条规则:在建立文件组时,有三条规则:n n数据库文件不能与一个以上的文件组关联。数据库文件不能与一个以上的文件组关联。n n日志文件不能加到文件组里。日志文件不能加到文件组里。 n n只有文件组中任何一个文件都没有空间了,文件组的只有文件组中任何一个文件都没有空间了,文件组的文件才会自动增长文件才会自动增长 。n n三种不同类型的文件组三种不同类型的文件组n n主类型主类型(PRIMARY)(PRIMARY)n n用户定义型用户定义型n n缺省型缺省型 数据库的存储结构n n数据库文件组 n n利用文件组可以使服务器的性能得到提高。 n n主文件组中包含了所有的系统表,当建立数据库时,主文件组包括主数据库文件和未指定组的其他文件。n n用户定义文件组中可以指定一个缺省文件组,那么在创建数据库对象时如果没有指定将其放在哪一个文件组中,就会将它放在缺省文件组中。如果没有指定缺省文件组,则主文件组为缺省文件组。数据库的存储结构n n一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用;日志文件是独立的,它不能作为任何文件组的成员。 4.1.1 页面页面逻辑存储结构逻辑存储结构 1、什么是页面?n nSQL ServerSQL Server中的所有信息都存储在页面(中的所有信息都存储在页面(pagepage)上,页面是数据库中使用的最小数据单元。上,页面是数据库中使用的最小数据单元。n n每一个页面存储每一个页面存储8KB8KB(81928192字节)的信息。字节)的信息。n n所有的页面都包括一个所有的页面都包括一个132132字节的页面头,用来字节的页面头,用来唯一地标识存储在页面中的数据,留下唯一地标识存储在页面中的数据,留下8060 8060 字字节存储数据。节存储数据。n n每页可以包含至少一行,但一行不能超出一页的每页可以包含至少一行,但一行不能超出一页的长度。每页只能存储一个表中的数据。长度。每页只能存储一个表中的数据。 页面(续)页面(续)2 2、SQL ServerSQL Server使用页面的类型使用页面的类型 n n分配页面:用于控制数据库中给表和索引分配的页面。分配页面:用于控制数据库中给表和索引分配的页面。 n n数据和日志页面:数据和日志页面: 用于存储数据库数据和事务日志数据。数据存储在每个用于存储数据库数据和事务日志数据。数据存储在每个页面的数据行中。每一行大小的最大值为页面的数据行中。每一行大小的最大值为80608060个字节。个字节。SQL ServerSQL Server不允许记录跨页面存储。不允许记录跨页面存储。 n n索引页面:用于存储数据库的索引数据。索引页面:用于存储数据库的索引数据。 n n分发页面:用于存储数据库中有关索引的信息。分发页面:用于存储数据库中有关索引的信息。 n n文本文本 / / 图像页面:用于存储大量的文本或二进制大对象图像页面:用于存储大量的文本或二进制大对象(BLOBBLOB)。)。 4.1.2 盘区盘区 1 1、什么是盘区?什么是盘区?n n盘区是盘区是SQL ServerSQL Server每次申请空间时能分配的最小单位。每次申请空间时能分配的最小单位。n一个盘区( extent)是由8个连续的页面(88KB=64KB)组成的数据结构。n n当创建一个数据库对象(如一个表)时,当创建一个数据库对象(如一个表)时, SQL ServerSQL Server会自动地以盘区为单位给它分配空间。会自动地以盘区为单位给它分配空间。n每一个盘区只能包含一个数据库对象。n盘区是表和索引分配空间的单位。n假设我们在一个新建的数据库中,创建了一个表和两个索引,并且表中只插入了一条记录,那么,总共占用364KB=192KB空间。盘区(续)盘区(续)2、SQL Server使用的盘区的种类n n混合型混合型一个混合型区域有一个混合型区域有64KB64KB,其中的页可以其中的页可以组成组成8 8个不同的对象。个不同的对象。 n n统一型统一型一个统一型区域有一个统一型区域有64KB64KB,其中所有的页其中所有的页必须属于同一个对象。必须属于同一个对象。 当你第一次建立一个数据库对象时,当你第一次建立一个数据库对象时, SQL ServerSQL 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每个数据库都由以下几个部分的数据库对象所组成: 关系图、表、视图、存储过程、用户、角色、规则、默认、用户自定义数据类型和用户自定义函数。 估算数据库的空间需求n n数据库管理员的主要任务之一是创建数据库,并且需要为每个文件指定容量。准确地估算应有的容量以免浪费不必占用的资源或者用尽数据库的空间是数据库管理员的责任。考虑因素n 每行记录的大小。每行记录都由一列或者多列数据组成。这些列决定了每一行的大小,必须从数据库开发人员那里或者通过自行检查数据库中的每个表得到每一行的大小。n 记录的数量。表中的记录数有可能基本不变,也有可能变化相当大。数据库开发人员可以告诉你数据库中的每个表预计存储多少条数据。n 表的数量。一些数据库只有少量的表,另一些却有可能有成百上千的表。你可以使用企业管理器自行查看表的数量。n 索引的数量。每个表都有一个或者多个索引,这些索引可能是聚簇式索引或者是非簇式索引。每个非簇式索引将在数据库中占用额外的空间。n 每个索引的大小。索引的大小取决于使用该索引的列的大小、索引中包含的记录数量和索引的填充因子。填充因子越大,索引对象占用的空间就越多。n 数据库对象的数量和大小。数据库包含很多对象,例如触发器、视图、存储过程等等。考虑因素n 事务日志的大小。事务日志大小的差别很大。这取决于很多因素,其中包括数据库中的数据的修改频率。大多数事务日志以数据库容量的1 0 %到2 5 %为起点,在数据库被用于实际工作环境后再通过监控来调整。经验显示,经常被修改的数据库和很少被修改的数n据库相比需要更大的事务日志。越是经常备份,事务日志就越是可以小一些,这是因为在每次备份过程中都会截断事务日志。n 数据库的计划成长量。有一些数据库的容量从不增长,也有一些每周都大幅度地增长。为了确定总体的计划成长量,你必须估算数据库中每个表的成长量。估算公式n n其中,行的长度,就是指一行的字节数。创建新数据库的注意事项创建新数据库的注意事项n n缺省情况下只有系统管理员可以创建新数据库缺省情况下只有系统管理员可以创建新数据库n n给数据库指定名字必须遵循给数据库指定名字必须遵循SQL ServerSQL Server命名规范命名规范 n n所有的新数据库都是所有的新数据库都是modelmodel数据库的拷贝数据库的拷贝 n n单个数据库可以存储在单个文件上,也可以跨越单个数据库可以存储在单个文件上,也可以跨越多个文件存储多个文件存储 n n数据库的大小可以被扩展或者收缩数据库的大小可以被扩展或者收缩 n n当新的数据库创建时,当新的数据库创建时, SQL ServerSQL Server自动地更新自动地更新“ “mastermaster” ”数据库的数据库的“ “sysdatabasessysdatabases” ”系统表系统表 n n在SQL Server中创建数据库时,在创建新数据库之前,首先创建两个文件:一个用于数据库,另外一个用于事务日志。考虑在数据库使用的文件的逻辑名上加n n入“ data ”这个词,在事务日志使用的文件的逻辑名上加入“ log ” 这个词( 例如n n“marketing_data”和“marketing_log”)。创建新数据库的注意事项n1) 缺省情况下,只有系统管理员可以创建新数据库。n2 ) 给数据库指定的名字必须遵循SQL Server命名规范:n 字符的长度可以从1到3 0。n 名称的第一个字符必须是一个字母或者是下列字符中的某一个:下划线( _),a t符号(),或者是英镑符号( #)。n 在首字母后的字符可以是字母、数字或者前面规则中提到的符号。n 名称当中不能有任何空格,除非将名字用引号引起来。创建新数据库的注意事项n n3) 所有的新数据库都是model数据库的拷贝。这意味着新数据库不可能比model数据库当前的容量更小。n n4) 单个数据库可以存储在单个文件上,也可以跨越多个文件存储。n n5) 数据库的大小可以被扩展或者收缩。n n6) 当新的数据库创建时, SQL Server自动地更新“ master”数据库的“ sysdatabases”系统表。创建数据库的方法 n n使用向导创建数据库n n使用企业管理器(Enterprise Manager)创建数据库n n使用Transact-SQL语言创建数据库。 使用企业管理器创建数据库n n该使用企业管理器来创建和管理数据库。这个图形化用户界面比Transact-SQL语句或者系统存储过程更容易使用。步骤-创建名为M Y D B的数据库n1) 在企业管理器的主界面中选择一个SQL Server,单击这个服务器旁边的加号打开这个文件夹,出现各个SQL Server文件夹。n2) 单击Databases旁的加号,打开这个文件夹,出现这个SQL Server上当前所有数据库的列表(见图5 - 3)n3) 右击D a t a b a s e s文件夹,从菜单中选择New Database,出现Database Properties对话框(见图5 - 4)。n4) 在Name一栏中输入新建数据库的名字,如: MYDB。确保遵循了SQL Server的命名规范标准。n5) 在File name一栏中可以输入数据文件的逻辑名。缺省情况下,系统自动产生“数据库名_ Data”的数据文件,你可以修改这个名字。而且,你可以输入多个文件。n6 ) 在Location中可以指定数据文件所在的位置。缺省情况下,是安装SQL Server的目录的Data子目录下。你可以修改它。n7) 在Initial size一栏中以兆为单位输入数据文件的初始容量。值得注意的是,数据文件必须以1 M的整倍数来创建,所以在这里你必须输入一个整数。n8 ) 在该页的下面,你可以选择Automatically grow file,指明:如果数据库的数据容量超过了数据文件的大小,数据文件可以自动增加。你可以指定按照百分比增加(选择By percent后输入百分数),或者指定按照大小增加(选择In megabytes后输入大小)。你还可以指定:增加是否有上限。如果想指定上限,可以选择Restrict filegrowth并输入上限的大小;如果不想指定上限,可以选择Unrestricted filegrowth。n9) 在Transaction Log页中,输入日志文件的名称和大小。n10) 单击“确定”按钮立即创建数据库。n如果你选择“确定”,这个数据库就会立即创建。SQL Server不会返回任何有关创建的状态的信息。你可以通过在企业管理器的主界面中查看Databases文件夹下是否包含新建的数据库来验证创建工作成功与否。(一)使用向导创建数据库n n以下图4-1 到图4-8是使用向导创建数据库 ,用户根据提示操作,即可创建数据库。图图4-1 选选择择向向导导对对话话框框图图4-2 欢迎使用创建数据库向导对话框欢迎使用创建数据库向导对话框 图图4-3 输入数据库名称和文件位置对话框输入数据库名称和文件位置对话框 图图4-4 定义数据库文件逻辑名称及初始大小对话话框定义数据库文件逻辑名称及初始大小对话话框图图4-5 定义数据库增长信息对话框定义数据库增长信息对话框 图图4-6 定义事务日志文件名称及初始大小对话框定义事务日志文件名称及初始大小对话框 图图4-7 定义事务日志文件增长信息对话框定义事务日志文件增长信息对话框 图图4-8 确认创建数据库对话框确认创建数据库对话框 (3) 使用Transact-SQL语言创建数据库,语法如下:n nCREATE DATABASE database_nameCREATE DATABASE database_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_increment ) FILEGROWTH=growth_increment ) ,nnn n :=FILEGROUP :=FILEGROUP filegroup_namefilegroup_name ,nndatabase_namedatabase_name:数据库的名称,最长为数据库的名称,最长为128128个字符。个字符。PRIMARYPRIMARY:该选项是一个关键字,指定主文该选项是一个关键字,指定主文件组中的文件。件组中的文件。 LOG ONLOG ON:指明事务日志文件的明确定义。指明事务日志文件的明确定义。 NAMENAME:指定数据库的逻辑名称,这是在指定数据库的逻辑名称,这是在SQL SQL ServerServer系统中使用的名称,是数据库在系统中使用的名称,是数据库在SQL SQL ServerServer中的标识符。中的标识符。各参数说明如下:各参数说明如下: FILENAMEFILENAME:指定数据库所在文件的操作指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名系统文件名称和路径,该操作系统文件名和和NAMENAME的逻辑名称一一对应。的逻辑名称一一对应。SIZESIZE:指定数据库的初始容量大小。指定数据库的初始容量大小。 MAXSIZEMAXSIZE:指定操作系统文件可以增长到指定操作系统文件可以增长到的最大尺寸。的最大尺寸。 FILEGROWTHFILEGROWTH:指定文件每次增加容量的指定文件每次增加容量的大小,当指定数据为大小,当指定数据为0 0时,表示文件不增时,表示文件不增长长。例子4-1:创建了一个Company数据库 n n创建了一个创建了一个CompanyCompany数据库,该数据库的主数数据库,该数据库的主数据文件逻辑名称为据文件逻辑名称为Company_dataCompany_data,物理文件名物理文件名为为Company.mdfCompany.mdf,初始大小为初始大小为10MB10MB,最大尺寸最大尺寸为无限大,增长速度为为无限大,增长速度为10%10%;数据库的日志文;数据库的日志文件逻辑名称件逻辑名称为为Company_logCompany_log,物理文件名为物理文件名为Company.ldfCompany.ldf,初始大小为初始大小为1MB1MB,最大尺寸为最大尺寸为5MB5MB,增长速度增长速度为为1MB1MB。n n程序清单:程序清单: create database companycreate database companyon primaryon primary(name=(name=company_datacompany_data, ,filename=d:mssql7datacompany.mdf,filename=d:mssql7datacompany.mdf,size=10,size=10,maxsizemaxsize=unlimited,=unlimited,filegrowthfilegrowth=10%)=10%)log onlog on(name=(name=company_logcompany_log, ,filename=d:mssql7datacompany.ldf,filename=d:mssql7datacompany.ldf,size=1,size=1,maxsizemaxsize=5,=5,filegrowthfilegrowth=1)=1)n n输出为:输出为:输出为:输出为:The CREATE DATABASE process is allocating 10.00 MB on disk The CREATE DATABASE process is allocating 10.00 MB on disk company_datacompany_data. .The CREATE DATABASE process is allocating 1.00 MB on disk The CREATE DATABASE process is allocating 1.00 MB on disk company_logcompany_log. .例子4-2:创建一个指定多个数据文件和日志文件的数据库 n n该数据库名称为该数据库名称为该数据库名称为该数据库名称为employeesemployeesemployeesemployees,有有有有1 1 1 1个个个个10MB10MB10MB10MB和和和和1 1 1 1个个个个20MB20MB20MB20MB的数据的数据的数据的数据文件和文件和文件和文件和2 2 2 2个个个个10MB10MB10MB10MB的事务日志文件。数据文件逻辑名称为的事务日志文件。数据文件逻辑名称为的事务日志文件。数据文件逻辑名称为的事务日志文件。数据文件逻辑名称为employee1employee1employee1employee1和和和和employee2employee2employee2employee2,物理文件名为物理文件名为物理文件名为物理文件名为employee1.mdfemployee1.mdfemployee1.mdfemployee1.mdf和和和和employee2.mdfemployee2.mdfemployee2.mdfemployee2.mdf。主文件是主文件是主文件是主文件是employee1employee1employee1employee1,由,由,由,由primaryprimaryprimaryprimary指定,指定,指定,指定,两个数据文件的最大尺寸分别为无限大和两个数据文件的最大尺寸分别为无限大和两个数据文件的最大尺寸分别为无限大和两个数据文件的最大尺寸分别为无限大和100MB100MB100MB100MB,增长速增长速增长速增长速度分别为度分别为度分别为度分别为10%10%10%10%和和和和1MB1MB1MB1MB。事务日志文件的逻辑名事务日志文件的逻辑名事务日志文件的逻辑名事务日志文件的逻辑名为为为为employeelog1employeelog1employeelog1employeelog1和和和和employeelog2employeelog2employeelog2employeelog2,物理文件名为物理文件名为物理文件名为物理文件名为employeelog1.ldfemployeelog1.ldfemployeelog1.ldfemployeelog1.ldf和和和和employeelog2.ldfemployeelog2.ldfemployeelog2.ldfemployeelog2.ldf,最大尺寸均为最大尺寸均为最大尺寸均为最大尺寸均为50MB50MB50MB50MB,文件增长速度为文件增长速度为文件增长速度为文件增长速度为1MB1MB1MB1MB。n n其其其其源程序为:源程序为:源程序为:源程序为:create database employeescreate database employeeson primaryon primary(name=employee1,(name=employee1,filename=d:mssql7data employee1.mdf,filename=d:mssql7data employee1.mdf,size=10, size=10, maxsizemaxsize=unlimited, =unlimited, filegrowthfilegrowth=10%),=10%),(name=employee2,(name=employee2,filename=d:mssql7data employee2.mdf,filename=d:mssql7data employee2.mdf,size=20, size=20, maxsizemaxsize=100, =100, filegrowthfilegrowth=1)=1)log on log on (name=employeelog1,(name=employeelog1,filename=d:mssql7data employeelog1.ldf,filename=d:mssql7data employeelog1.ldf,size=10, size=10, maxsizemaxsize=50, =50, filegrowthfilegrowth=1),=1),(name=employeelog2,(name=employeelog2,filename=d:mssql7data employeelog2.ldf,filename=d:mssql7data employeelog2.ldf,size=10, size=10, maxsizemaxsize=50, =50, filegrowthfilegrowth=1)=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 process 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.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 EnterpriseSQL Enterprise Manager Manager设置数据库设置数据库选项选项 n n通过通过“sp_dboptionsp_dboption”系统存储过程来修改系统存储过程来修改数据库选项数据库选项n每个数据库的选项都是与其他数据库分离设置的。部分数据库选项n每一个选项在缺省的情况下都是被关闭的。n ANSI Null Default:这个选项决定了表中的列在缺省的情况下被设置为“ NULL”(允许为空)还是“NOT NULL”(不允许为空)。打开这个选项会使Microsoft SQL Server的数据库与ANSI标准兼容。n DBO Use Only:如果打开这个选项,将只允许数据库属主( DBO)访问这个数据库。如果在用户访问这个数据库的期间打开了这个选项,这个用户仍旧可以继续访问这个数据库,但是新的用户不能登录访问这个数据库。n Read Only:如果这个选项被打开,这个数据库就处于只读状态。这样用户就不能修改数据库中的任何记录。n Select Into/Bulk Copy:在数据库中执行不记日志的操作之前必须设置这个选项。一个不记日志的操作会忽略事务日志而直接修改数据库中的内容。部分数据库选项n Single User:这个选项被设置时,每一时刻只有一个用户可以访问这个数据库。但是这个用户并不限于sa或者dbo,因此任何首先访问该数据库的用户就是这个唯一允许访问数据库的用户。打开这个选项将取消数据库中的所有锁,这是因为数据库中只有一个用户,所以没有必要加任何锁。n Truncate Log on Checkpoint:这个选项打开以后,在每一次检查点发生时都会将非活动事务从事务日志中清除。事务日志通常只有在手工截断日志或者备份事务日志时才会被截断。存储过程sp_dboption的语法 n nsp_dboptionsp_dboption , , n n例子例子USE masterUSE masterEXEC EXEC sp_dboptionsp_dboption library , library ,trunctrunc. log on . log on chkptchkpt. ,true. ,trueGOGOn3) 执行这个语句。在“ Resul s”窗口中将显示以下消息:nCheckpointing database that was changed.nDBCC execution completed. If DBCC printed error messages, contact your system administrator.n这个数据库的属性已经被修改了。4.2.3 4.2.3 修改数据库修改数据库n n数据库的容量可以增大或者减小。n n1. 利用企业管理器修改数据库 n n2. 使用ALTER DATABASE语句修改数据库 1. 利用企业管理器修改数据库n n设置中的各选项说明如下设置中的各选项说明如下 :n nANSI NULLANSI NULL默认设置:允许在数据库表的列中输入空默认设置:允许在数据库表的列中输入空(NULLNULL)值。值。 n n递归触发器递归触发器nested triggers :允许触发器递归调用。:允许触发器递归调用。SQL ServerSQL Server设定的触发器递归调用的层数最多为设定的触发器递归调用的层数最多为3232层。层。n n自动更新统计信息自动更新统计信息auto update statistic :允许使:允许使用用SELECT INTOSELECT INTO或或BCPBCP、WRITETEXTWRITETEXT、UPDATETEXTUPDATETEXT命令向表命令向表中大量插入数据。中大量插入数据。n n 残缺页检测残缺页检测torn page detectiontorn page detection:允许自动检测有损坏:允许自动检测有损坏的页。的页。n n自动关闭自动关闭autocloseautoclose:当数据库中无用户时,自动关闭该:当数据库中无用户时,自动关闭该数据库,并将所占用的资源交还给操作系统数据库,并将所占用的资源交还给操作系统。n n自自动动收收缩缩autoshrinkautoshrink:允允许许定定期期对对数数据据库库进进行行检检查查,当当数数据据库库文文件件或或日日志志文文件件的的未未用用空空间间超超过过其其大大小小的的25%25%时时,系系统将会自动缩减文件使其未用空间等于统将会自动缩减文件使其未用空间等于25%25%。n n自自动动创创建建统统计计信信息息auto auto create create statisticsstatistics:在在优优化化查查询(询(Query OptimizerQuery Optimizer)时,根据需要自动创建统计信息。时,根据需要自动创建统计信息。n n使使用用被被引引用用的的标标识识符符quoted quoted identifieridentifier:标标识识符符必必须须用用双双引引号括起来,且可以不遵循号括起来,且可以不遵循Transact-SQLTransact-SQL命名标准。命名标准。1. 使用企业管理器修改n1) 在S Q L企业管理器的服务器管理器窗口中选择一个SQL Server,单击这个服务器旁边的加号打开这个文件夹,出现多个SQL Server文件夹。n2 ) 单击“ D a t a b a s e s”旁的加号,打开这个文件夹,出现这个SQL Server上当前所有数据库的列表。n3) 右击你打算修改大小的数据库,选择Properties,出现Database Properties对话框(见图5 - 6)。n4) 确保目前正在General选项卡中。n5) 在Space Allocated(MB)下,选择你打算将数据文件将要扩展的容量。n6) 如果需要,你还可以在“ Transaction Log”选项卡中输入事务日志将要扩展的容量。n7) 在输入了所有这些信息后,单击“确定”按钮,这个数据库(和/或事务日志)将会以指定的容量扩展。n如果要收缩数据库,就不能在Edit Database对话框中直接修改数据文件大小。不能改小数据文件的大小。必须使用Transact-SQL语句或者选择数据库属性中Auto Shrink 。如果选择Auto Shrink并单击“OK”,该数据库会自动收缩到合适大小。2. 使用Transact-SQL语句修改n nALTER DATABASE ALTER DATABASE databasedatabasen n n nADD FILE ADD FILE ,.n TO FILEGROUP ,.n TO FILEGROUP filegroup_namefilegroup_name n n| ADD LOG FILE | ADD LOG FILE ,.n ,.nn n| REMOVE FILE | REMOVE FILE logical_file_namelogical_file_namen n| ADD FILEGROUP | ADD FILEGROUP filegroup_namefilegroup_namen n| REMOVE FILEGROUP | REMOVE FILEGROUP filegroup_namefilegroup_namen n| MODIFY FILE | MODIFY FILE n n| MODIFY FILEGROUP | MODIFY FILEGROUP filegroup_namefilegroup_name filegroup_propertyfilegroup_propertyn n := :=n n(NAME = (NAME = logical_file_namelogical_file_namen n, FILENAME = , FILENAME = os_file_nameos_file_name n n, SIZE = , SIZE = sizesize n n, MAXSIZE = , MAXSIZE = max_sizemax_size | UNLIMITED | UNLIMITED n n, FILEGROWTH = , FILEGROWTH = growth_incrementgrowth_increment ) )n database_name:被扩展的数据库的名字。n ADD FILE :指定添加到数据库中的数据文件。n TO FILEGROUP filegroup_name :指定文件添加到文件组名为file group_name的文件组。n ADD LOG FILE :指定添加到数据库中的日志文件。n REMOVE FILE :从数据库系统表中删除该文件,并物理删除该文件。n ADD FILEGROUP :指定添加到数据库的文件组。n filegroup_name :文件组名。n REMOVE FILEGROUP :从数据库中删除该文件组,并删除在这个文件组中的文件。n MODIFY FILE :指定要修改的文件。包含该文件的名称、大小、增长量和最大容量。n一次只可以修改其中的一个选项。n MODIFY FILEGROUP 指定修改文件组的一些选项。n Filegroup_property:READONLY指定该文件组“只读”。READWRITE指定该文件组“可读写”。DEFAULT指定该文件组为数据库缺省文件组。在创建数据库时,primary文件组是缺省文件组。如果在创建表或索引时,未指定文件组,那么,系统自动将这些表或索引创建在缺省文件组上。n NAME :用来描述在FILESPEC中定义的文件的逻辑名称。当FOR ATTACH时,名字参数是不必要的。n logical_file_name:文件的逻辑名。在数据库中每个逻辑文件名必须唯一且遵守命名规则。n FILENAME =os_file_name:用来指明在FILESPEC中被定义的操作系统文件名。n SIZE :指定文件的初始大小。可以使用K B和M B单位。如果没有指定,缺省为1 MB。n MAXSIZE :指定文件的最大容量。可以使用K B和M B单位。如果没有指定,会将整个磁盘占满。n UNLIMITED:指定不限制文件的增长,直到占满整个磁盘。n FILEGROWTH :指定文件的增长百分数。n growth_increment :增长百分数。0代表不变。这个值可以是M B、K B或%。如果没有指定,缺省是1 0 %。n1) 启动Query Analyzer查询工具(或者一个类似的工具)。n2) 从“DB”下拉式菜单中选择“ master”数据库。n3 ) 输入相应的Transact-SQL语句。nALTER DATABASE library MODIFY FILE ( NAME = library_log,nMAXSIZE = 25MB)nALTER DATABASE library MODIFY FILE (NAME = library_log,nSIZE = 20MB)n4 ) 执行这个语句。在“ Results”窗口中将显示以下消息:nThe command(s) completed successfully.例子4-3 n n例子4-3:添加一个包含两个数据文件的 文 件 组 和 一 个 事 务 日 志 文 件 到employees数据库中。n n程序清单: Alter database employeesAlter database employeesAdd Add filegroupfilegroup data1 data1Alter database employeesAlter database employeesAdd file Add file (name=employee3,(name=employee3,filename=d:mssql7dataemployee3.ndf,filename=d:mssql7dataemployee3.ndf,size=1, size=1, maxsizemaxsize=50, =50, filegrowthfilegrowth=1),=1),(name=employee4,(name=employee4,filename=d:mssql7dataemployee4.ndf,filename=d:mssql7dataemployee4.ndf,size=2, size=2, maxsizemaxsize=50, =50, filegrowthfilegrowth=10%)=10%)to to filegroupfilegroup data1 data1Alter database employeesAlter database employeesadd log fileadd log file(name=employeelog3,(name=employeelog3,filename=d:mssql7dataemployeelog3.ldf,filename=d:mssql7dataemployeelog3.ldf,size=1, size=1, maxsizemaxsize=50, =50, filegrowthfilegrowth=1) =1) n n输出结果为:输出结果为:输出结果为:输出结果为: Extending database by 1.00 MB on disk employee3.Extending database by 1.00 MB on disk employee3. Extending database by 2.00 MB on disk employee4. Extending database by 2.00 MB on disk employee4. Extending database by 1.00 MB on disk employeelog3. Extending database by 1.00 MB on disk employeelog3. 收缩数据库n“DBCC SHRINKDB” Transact-SQL语句的语法:nDBCC SHRINKDATABASEn( database_name , target_percentn, NOTRUNCATE | TRUNCATEONLY n上述语法中包含以下占位符:n database_name :被收缩的数据库的名字。n target_percent:被收缩后数据文件的空闲空间的百分数。n NOTRUNCATE :保留数据文件中的空闲空间。n TRUNCATEONLY :将数据文件中的空闲空间返回给操作系统。例子:收缩northwind数据库为原来的2 0 %n n按照以下步骤使用Transact-SQL语句来修改n n1) 启动SQL查询工具,确保选中了Query选项卡。n n2) 从DB下拉式菜单中选择master数据库。n n3) 输入Transact-SQL语句。n nDBCC SHRINKDB (northwind, 20)n n4) 执行该语句。2.2.更改数据库名称 通过“sp_renamedb”系统存储过程来更改数据库名称 语法如下:语法如下: sp_renamedbold_name,new_namesp_renamedbold_name,new_name4.2.4 删除数据库 n n1.利用企业管理器删除数据库n n2. 利用Drop语句删除数据库n n Drop语句可以从SQL Server中一次删除一个或多个数据库。其语法如下:n nDrop database database_name,n例子4-4:删除创建的数据库company。n n程序清单:程序清单: drop database companydrop database companyn n输出结果为:输出结果为: Deleting database file Deleting database file d:mssql7datacompany.ldf.d:mssql7datacompany.ldf. Deleting database file Deleting database file d:mssql7datacompany.mdf.d:mssql7datacompany.mdf.
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号