数据库应用技术SQL Server 2000 第4章
1,第4章 数据库管理,4.1 数据库的存储结构 4.2 创建和管理数据库 4.3 备份和还原数据库 4.4 维护数据库,2,SQL Server 2000 的数据及所有与数据处理操作相关的信息都存储在数据库中,而数据库的存储分为逻辑存储结构和物理存储结构。其中,逻辑存储结构是指用户可以看到的数据库对象,包括表、视图、索引、存储过程等;物理存储结构是指用户看不到的存储在磁盘上的数据库文件。 数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成。一个数据库至少应该包含一个数据库文件和一个事务日志文件,见图4-1。,4.1 数据库的存储结构,3,图4-1 数据库的存储结构,4,4.1.1 数据库文件,在物理层面上,SQL Server数据库是由多个操作系统文件组成的,数据库所有的数据、对象和数据库操作日志均存储在这些操作系统文件中,根据这些文件的作用不同,可以将它们分为三种文件:主要数据文件(Primary Database File)、次要数据文件(Secondary Database File)和事务日志文件。,5,1主要数据文件 数据库文件是存放数据库数据和数据库对象的文件,一个SQL Server数据库在磁盘上可以有一个或多个数据库文件,当有多个数据库文件时,有一个数据库文件被定义为主要数据文件,其扩展名为 .mdf。主要数据文件是用来存储数据库的启动信息和部分数据或全部数据,它指向数据库中文件的其它部分,每个数据库只有一个主要数据文件。,6,2次要数据文件 次要数据文件是主要数据文件的辅助文件,扩展名为 .ndf。次要数据文件用于存储主要数据文件没有存储的剩余数据和剩余数据库对象。一个数据库可以没有次要数据文件,也可以同时拥有多个次要数据文件。使用次要数据文件的好处在于可以在不同的物理磁盘上创建次要数据文件,并将数据存储在文件中,这样可以有效地提高数据的处理效率;另外,当数据庞大时,主要数据文件的大小超过操作系统对单一文件大小的限制时,就必须使用次要数据文件来存储数据。,7,3事务日志文件 SQL Server每个数据库至少有一个事务日志文件,扩展名为 .ldf。事务日志文件用于存储数据库的更新情况等事务日志信息,所有使用INSERT、DELETE、UPDATE等SQL命令对数据库进行修改操作都要记录在事务日志文件中。 事务日志文件非常重要,当数据库遭到破坏时,管理员可以使用事务日志文件恢复数据库。 SQL Server 2000的文件拥有逻辑文件名和物理文件名两种名称。当使用T-SQL语句访问某一个文件时,必须使用该文件的逻辑文件名,逻辑文件名必须符合SQL Server的命名规则,并且不允许有相同的逻辑文件名。物理文件名是文件实际存储在磁盘上的文件名,可包括完整的磁盘目录路径。例如,系统的master数据库,其逻辑文件名是master,物理文件名是master.mdf,日志文件名是master.ldf。,8,4.1.2 数据库文件组,为了便于分配和管理SQL Server 2000,允许将多个数据库文件归为一个组,并赋予一个组名,这就是数据库文件组。一个数据库文件只能存于一个文件组,一个文件组也只能被一个数据库使用;日志文件是独立的,它不能存入任何文件组,也就是说,数据库的数据和日志内容不能存入相同的文件组中,日志空间和数据空间分开管理。,9,一些系统可以通过控制在特定磁盘驱动器上放置的数据和索引来提高自身的性能,文件组可以对此进程提供帮助。系统管理员可以为每个磁盘驱动器创建文件组,然后将特定的表、索引、或表中的 text、ntext 或 image 数据指派给特定的文件组。 SQL Server 2000提供了三种文件组类型,分别是主要文件组、用户定义文件组和默认文件组。 主要文件组包含主要数据文件和所有没有被包含在其它文件组里的文件。数据库的系统表都包含在主要文件组里。,10,用户定义文件组包括所有在使用CREATE DATABASE或ALTER DATABASE 命令时使用FILEGROUP关键字进行约束的文件。 默认文件组容纳所有在创建时没有指定文件组的表、索引以及text、ntext 或 image 数据类型的数据。每个数据库中都有一个文件组作为默认文件组运行,任何时候,只能有一个文件组被指定为默认文件组。默认情况下,主要文件组是默认文件组。,11,4.2 创建和管理数据库,4.2.1 创建数据库 4.2.2 查看数据库 4.2.3 修改数据库 4.2.4 删除数据库,12,4.2.1 创建数据库,SQL Server 2000每个数据库都由以下几个部分的数据库对象组成:关系图、表、视图、存储过程、用户、角色、规则、默认、用户自定义的数据类型和用户自定义的函数(参见图1-17)。 SQL Server 2000允许每个服务器中最多可以创建32767个数据库,每个数据库的库名必须符合系统标识符的命名规则,应该使用易于记忆并有一定意义的名称命名数据库。,13,创建数据库的过程实际是为数据库设计名称、设计数据库所占用的存储空间和存放文件的位置的过程。数据库的基本信息存储在系统的Master 数据库中的sysdatabases系统表中,可以使用SELECT语句来查询数据库的信息。 用户自定义数据库的方法有三种:使用企业管理器创建数据库、使用Transact-SQL语言创建数据库和使用向导创建数据库,在此主要介绍前两种方法。,14,1使用企业管理器创建数据库 使用在企业管理器创建数据库的方法非常简单,只需要六步就可以完成一个数据库的创建。 (1)进入企业管理器的主界面,用鼠标右键单击“数据库”文件夹,此时将弹出一个快捷菜单(如图4-2所示)。 (2)由弹出的快捷菜单中选择“新建数据库”选项,就会弹出“数据库属性”对话框,该对话框有三个选项卡:常规、数据文件和事务日志,如图4-3所示。,15,图4-2 创建数据库,16,图4-3常规选项卡,17,(3)在“常规”选项卡中的“名称”文本框内输入所要建立的数据库的逻辑名,如建立图书管理数据库,用汉语拼音的字头TSGL做文件名则输入TSGL(见图4-3)。 (4)单击“数据文件”选项卡,对数据文件的逻辑名称、存储位置、初始容量大小、所属文件组名称、文件属性(文件增长方式和最大文件大小)进行设置,如设定TSGL数据库的数据文件的逻辑名是TSGL_Data,初始大小为1MB,所属文件组是PRIMARY,文件按10%的比例自动增长,文件最大增长到10MB,如图4-4所示。,18,图4-4 创建数据库对话框中的数据文件选项卡,19,(5)单击“事务日志”选项卡,对事务日志文件的物理存储进行设置,如图4-5所示。在“文件名”列表框内可以输入事务日志文件的信息,包括事务日志文件的逻辑名称、存储位置、初始容量大小、文件属性(文件增长方式和最大文件大小)。如:设定TSGL数据库的事务日志文件的逻辑名是TSGL_Log,初始大小为1MB,文件按10%的比例自动增长,文件最大增长到2MB,如图4-5所示。 (6)前五步完成基本设置后,单击【确定】按钮,完成数据库的创建。这时在“数据库”文件夹内出现新建的数据库TSGL(见图4-6)。,20,图4-5 创建数据库对话框中的事务日志选项卡,21,图4-6 创建数据库TSGL,22,2使用Transact-SQL语言创建数据库 使用Transact-SQL语言创建数据库的命令是:CREATE DATABASE 其基本语法格式: CREATE DATABASE database_name ON PRIMARY ,n, ,n LOG ON ,n :=(NAME=logical_file_name, FILENAME=os_file_name ,SIZE=size ,MAXSIZE=max_size|UNLIMITED ,FILEGROWTH=growth_increment ),23,主要参数说明: database_name:表示新建数据库的名称,数据库名必须符合标识符的命名规则,数据库名最长为128个字符。 ON:表示存放数据库的数据文件将在后面分别给出定义; PRIMARY:该选项是定义数据库的主要文件组中的文件。主文件组不仅包含数据库系统表中的全部内容,而且还包含用户文件组中没有包含的全部对象。一个数据库只能有一个主文件,默认情况下,如果不指定PRIMARY关键字,则在命令中列出的第一个文件将被默认为主文件。,24,LOG ON:定义数据库的事务日志文件。如果没有 LOG ON 选项,系统会自动产生一个文件名前缀与数据库名相同,容量为所有数据库文件大小1/4的事务日志文件。 NAME:指定数据库的逻辑名称,这是在SQL Server系统中使用的名称,是数据库在SQL Server中的标识符。 FILENAME:定义数据库所在文件的操作系统文件名称和路径,该操作系统文件名和NAME的逻辑名称一一对应。,25,SIZE:指定数据库的初始容量大小。如果没有指明主文件的大小,则SQL Server默认其与模板数据库中主文件的大小一致,其它数据库文件和事务日志默认为1MB。SIZE最小值是512KB,默认值为1MB。 MAXSIZE:指定数据库文件可以增长到的最大尺寸。如果没有指定值,则文件可以不断增长直到充满磁盘。 FILEGROWTH:指定文件每次增加容量的大小,当指定数据为0时,表示文件不增长。如果没有指定值,则默认按10%的比例增长,每次扩容的最小值为64KB。,26,【例4.1】使用Transact-SQL语言创建一个图书管理数据库TSGL1,该数据库的主数据文件逻辑名称为TSGL1_data,物理文件名为TSGL1.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为TSGL1_log,物理文件名为TSGL1.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为1MB。,27,程序代码如下: CREATE DATABASE TSGL1 ON PRIMARY (name=TSGL1_data, FILENAME=C:Program FilesMicrosoft SQL ServerMSSQLdataTSGL1.mdf, SIZE=10, FILEGROWTH=10%) LOG ON (name=TSGL1_log, FILENAME=C:Program FilesMicrosoft SQL ServerMSSQLdataTSGL1.ldf, SIZE=1, MAXSIZE=5, FILEGROWTH=1),28,在查询分析器中输入并运行该程序,将创建TSGL1数据库。其运行结果为: CREATE DATABASE 进程正在磁盘 'TSGL1_data' 上分配 10.00 MB 的空间。 CREATE DATABASE 进程正在磁盘 'TSGL1_log' 上分配 1.00 MB 的空间。 在企业管理器中用鼠标右键点击新建的TSGL1数据库,从弹出的菜单中选取“属性”项,将弹出“TSGL1属性”对话框,从这个对话框的“数据文件”选项卡和“事务日志”选项卡可以查看新建数据库TSGL1的相关参数。,29,【例4.2】使用Transact-SQL语言创建一个含有多个数据文件和日志文件的数据库。该数据库名称为TSGL2,有1个10MB和1个20MB的数据文件和2个10MB的事务日志文件。数据文件逻辑名称为TSGL21_data和TSGL22_data,物理文件名为TSGL21.mdf和TSGL22.mdf。主文件是TSGL21,由primary指定,两个数据文件的最大尺寸分别为无限大和100MB,增长速度分别为10%和1MB。事务日志文件的逻辑名为TSGL21_log和TSGL22_log,物理文件