数据库原理与应用 合肥学院 叶潮流 2015.8
第4章 数据库的创建与管理 本章导读: 在SQL Server 系统中,数据库是最基本的对象,从体系结构上说,它有逻辑结构和物理结构之分,其中,逻辑数据库相当于一个容器,用于存储表、视图等数据库对象;物理数据库是对应于操作系统的文件系统,由一系列数据文件和事务日志文件组成的。 知识要点: 数据库体系结构 数据库的创建 数据库的修改 数据库的删除 数据库的压缩 数据库的附加和分离 1.数据库结构既然不同一般文件结构,那么究竟有什么不一样的结构? 2.不同于一般文件结构的数据库在创建时究竟有什么要注意的事项呢?
4.1 数据库的体系结构 4.1.1 文件名 4.1.2 数据库文件 4.1.3 数据库文件组 4.1 数据库的体系结构 在SQL Server中,数据库由两部分组成:物理数据库和逻辑数据库。物理数据库是数据库面向操作系统的物理文件部分,由一系列文件组成,如数据文件和事物日志文件;逻辑数据库是数据库面向用户的可视部分,由一系列数据库对象组成,如表、视图、存储过程、扩展存储过程、用户自定义函数、用户自定义数据类型、用户、角色、规则、默认值等。 4.1.1 文件名 4.1.2 数据库文件 4.1.3 数据库文件组
4.1.1 文件名 在SQL Server中,每个文件都有两种名称,分别称为逻辑(文件)名和物理(文件)名。 4.1.1 文件名 在SQL Server中,每个文件都有两种名称,分别称为逻辑(文件)名和物理(文件)名。 1.逻辑文件名:逻辑文件名是指在所有T-SQL语句中引用文件时必须使用的名称。逻辑文件名必须遵守SQL Server标识符的命名规则,且对数据库必须是唯一的。 2.物理文件名:也称物理存储文件名,是指数据库的文件在物理磁盘上的存储路径及文件系统名称的统称,物理文件名遵从操作系统文件名的命名规则。 SQL Server中标识符规则: (1)长度不超过128个字符; (2)开头字母为a~z或A~Z、#、_、@以及来自其它语言的字母字符; (3)后续字母可以是a~z或A~Z、#、_、@以及来自其它语言的字母字符、0~9、$; (4)不允许嵌入空格或其它特殊字符; (5)不允许与保留字同名; (6)在T-SQL语句使用标识符时,必须用双引号或方括号封装不符合规则的标识符; 注意:以符号@、#开头的标识符具有特殊的含义,以@开头的标识符表示局部变量,以@@开头的标识符表示全局变量;以#开头的标识符表示临时表或过程,以##开头的标识符表示全局临时对象。
4.1.2 数据库文件 在SQL Server中,每个数据库都由一系列文件组成,包括数据文件和事物日志文件两类,而数据文件又可分为主数据文件和辅数据文件两大类。 1.主数据文件:简称主文件,用来存储数据库的启动信息和部分或全部数据,每个数据库有且仅有一个主数据文件。主数据文件总是位于主文件组(primary)中,它代表数据库的起点,并且提供指针指向数据库中的其它文件。使用时,主数据文件包含两种名称:逻辑文件名和物理文件名,其中逻辑文件名无扩展名,物理存储文件名的扩展名默认为.mdf。 2.辅数据文件:简称辅文件,用于存储主数据文件中未存储的剩余数据和数据库对象。一个数据库既可以没有辅数据文件,也可以有若干个辅数据文件。辅数据文件既可以位于主文件组,也可以位于辅文件组中。使用时,辅数据文件也包含两种名称:逻辑文件名和物理文件名,其中逻辑文件名无扩展名,物理存储文件名的扩展名默认为.ndf。 3.事务日志文件:简称日志文件,用于存储对数据库任何操作过程的事务日志,以保证数据的一致性和完整性,有利于数据库的恢复。每个数据库都必须至少含有一个事务日志文件,也可以含有多个事务日志文件。事物日志文件不属于任何文件组。使用时,事务日志文件也包含两种名称:逻辑文件名和物理文件名,其中逻辑文件名无扩展名,物理存储文件名的扩展名默认为.ldf。 注意:在SQL Server中,一个数据库可以包含多个文件,不同文件也可以分别存储在不同分区磁盘上,但是一个文件只能存储于一个数据库内。
4.1.3 数据库文件组 文件组是一组相关数据文件的逻辑分组(有点类似于文件夹,文件夹是磁盘上的实际位置)。另外,文件组也分为主文件组和辅助文件组。一个数据文件只能属于一个文件组,一个文件组也只能属于一个数据库。事务日志文件独立存在的,不属于任何文件组。 1.主文件组:主文件组(primary)是数据库系统自身提供的,每个数据库有且仅有一个主文件组,主文件组中包含了所有系统表、主数据文件和未指定文件组的其它数据文件。 2.辅文件组:辅文件组是用户自行定义的文件组,每个数据库既可以没有辅文件组,也可以包含若干个辅文件组,辅文件组可以存储用户指定的辅数据文件。 3.默认文件组:默认文件组是没有分配文件组的数据文件的首选文件组(默认逻辑文组),其中包含在创建时没有分配文件组的所有表和索引的页。每个数据库只能有一个默认文件组。 注意:默认文件组和主文件组不是同一概念,数据库建立初始时,主文件组是默认文件组,db_owner固定数据库角色成员可以通过命令将用户定义的文件组指定为后续数据文件的默认文件组。
4.2 数据库的创建 4.2.1 使用向导创建数据库 4.2.2 使用设计器创建数据库 4.2.3 使用查询分析器建立数据库 4.2 数据库的创建 创建数据库的过程实际上是确定数据库名称、数据库相关文件存放位置、存储空间大小及其相关属性的设置。创建数据库既可以使用Transact-SQL语句,也可以使用企业管理器。使用企业管理器时,既可以利用向导创建数据库,也可以利用设计器创建数据库。 4.2.1 使用向导创建数据库 4.2.2 使用设计器创建数据库 4.2.3 使用查询分析器建立数据库 1.在了解数据库体系结构的基础上,能不能亲自体验一下创建数据库呢? 2.不同于一般文件结构的数据库在创建时究竟有什么要注意的事项呢?
4.2.1 使用向导创建数据库 【例4-1】 使用向导创建数据库步骤如下: 4.2.1 使用向导创建数据库 【例4-1】 使用向导创建数据库步骤如下: (1)展开企业管理器控制台根目录(左侧窗格)的树形结构,直至SQL Server服务器实例,如“(local)(Windows NT)”,然后执行“工具”→“向导”命令后(如图4-1所示),弹出“选择向导”对话框,展开“数据库”,选择“创建数据库向导”,如图4-2所示。
图4-1 “企业管理器”对话框 图4-2 “选择向导”对话框 4.2.1 使用向导创建数据库 图4-1 “企业管理器”对话框 图4-2 “选择向导”对话框
(2)继续单击“确定”按钮,打开“创建数据库向导”对话框①,如图4-3所示。 (3)继续单击“下一步”按钮,打开“创建数据库向导”对话框②,并设置数据库名称为“jxgl”,数据库文件位置和事务日志文件位置均为“D:\data\”,如图4-4所示 图4-3 “创建数据库向导”对话框① 图4-4 “创建数据库向导”对话框②
图4-5 “创建数据库向导”对话框③ 图4-6 “创建数据库向导”对话框④ (4)继续单击“下一步”按钮,打开“创建数据库向导”对话框③,可以设置数据文件名和初始大小,如图4-5所示。 (5)继续单击“下一步”按钮,打开“创建数据库向导”对话框④,可以设置数据库文件的增长方式和最大文件大小,如图4-6所示。 图4-5 “创建数据库向导”对话框③ 图4-6 “创建数据库向导”对话框④
图4-7 “创建数据库向导”对话框⑤ 图4-8 “创建数据库向导”对话框⑥ (6)继续单击“下一步”按钮,打开“创建数据库向导”对话框⑤,可以设置事务日志文件名和初始大小,如图4-7所示。 (7)继续单击“下一步”按钮,打开“创建数据库向导”对话框⑥,可以设置事务日志文件的增长方式和最大文件大小,如图4-8所示。 图4-7 “创建数据库向导”对话框⑤ 图4-8 “创建数据库向导”对话框⑥
(8)继续单击“下一步”按钮,然后单击“完成”按钮,打开“创建数据库向导”对话框⑦,如图4-9所示。 图4-9 “创建数据库向导”对话框⑦
4.2.2 使用设计器创建数据库 【例4-2】 使用设计器创建数据库。 操作步骤如下: 4.2.2 使用设计器创建数据库 【例4-2】 使用设计器创建数据库。 操作步骤如下: (1)展开企业管理器控制台根目录(左侧窗格)的树形结构,直至“数据库”节点,右击“数据库”,弹出“新建数据库”快捷菜单,如图4-10所示,或者执行“操作”→“新建数据库”命令,如图4-11所示。
图4-10 “企业管理器”对话框① 图4-11 “企业管理器”对话框② 4.2.2 使用设计器创建数据库 图4-10 “企业管理器”对话框① 图4-11 “企业管理器”对话框②
(2)执行“新建数据库”命令后,打开“数据库属性”对话框①,在“常规”选项卡的“名称”文本框输入数据库的名称为“jxgl”,并选择排序规则,如图4-12所示。 图4-12 “数据库属性”对话框① 注意:此时,如果单击“确定”按钮,数据库将按照默认方式创建。
(4)单击“事务日志”选项卡,打开“数据库属性”对话框③,设置事务日志文件的文件名为“jxgl_Log”,存储位置为“D:\data\jxgl_Log.Ldf”,初始大小,所属文件组和所属文件属性,如图4-14所示。 注意:可以设置多个日志文件。 图4-14 “数据库属性”对话框③
(3)单击“数据文件”选项卡,打开“数据文件”界面,设置数据文件的文件名(逻辑名)为“jxgl_Data”,位置(操作系统文件名称,物理文件名)为“D:\data\jxgl_Data.Mdf”,初始大小,所属文件组,并设置文件属性,如图4-13所示。 图4-13 “数据库属性”对话框② 注意:可以设置多个数据文件,除了第一个数据文件是主文件(.mdf)外,其它数据文件都是辅数据文件(.ndf)。
4.2.3 使用查询分析器建立数据库 可以在查询分析器中利用T-SQL命令创建数据库,创建数据库的命令格式如下: 4.2.3 使用查询分析器建立数据库 可以在查询分析器中利用T-SQL命令创建数据库,创建数据库的命令格式如下: create database <数据库名称> [on [primary] {<文件说明>[,…n] } [,<文件组说明>[,…n]] ] [log on {<文件说明>[,…n]}] [for load|for attach] 其中, <文件说明>::= (<name=逻辑文件名> <,fielname=’物理文件名’> [,size=初始大小] [,maxsize={最大限制|unlimited}] [,filegrowth=文件增长量]) [,…n] <文件组说明>::= filegroup <文件组名称> [default] <文件说明> [,…n] 功能:创建一个指定数据库名称的数据库。
4.2.3 使用查询分析器建立数据库 说明: (1)on:用于指明数据文件(组)的明确定义; (2)primary:指定主文件组; 4.2.3 使用查询分析器建立数据库 说明: (1)on:用于指明数据文件(组)的明确定义; (2)primary:指定主文件组; (3)name:指定逻辑文件名,必选属性; (4)filename:指定物理文件(操作系统文件)的路径和文件名,必选属性; (5)size:指定文件的初始大小,如果没有指定,则默认值为1M; (6)maxsize:指定文件最大大小,其中关键字unlimited表示文件的大小不受限制; (7)filegrowth:指定文件增长方式,可以按兆字节增长也可以按百分比增长; (8)log on:指定数据库日志文件的属性,其定义格式与数据文件的格式定义相同; (9)filegroup:指定文件组的属性,default表示该文件组为数据库中默认文件组。
4.2.3 使用查询分析器建立数据库 【例4-3】 创建一个数据库mn3,其它属性取默认值。 create database mn3 4.2.3 使用查询分析器建立数据库 【例4-3】 创建一个数据库mn3,其它属性取默认值。 create database mn3 运行结果如图4-15所示。 图4-15 “例4-3”运行对话框
4.2.3 使用查询分析器建立数据库 【例4-4】 创建一个数据库mn4,物理文件名'd:\mn\mn4.mdf',数据文件逻辑名为mn4_data。 create database mn4 on ( name=mn4_data, filename='d:\mn\mn4.mdf' ) 运行结果如图4-16所示。 图4-16 “例4-4”运行对话框
4.2.3 使用查询分析器建立数据库 【例4-5】创建一个数据库mn5,其中: 4.2.3 使用查询分析器建立数据库 【例4-5】创建一个数据库mn5,其中: (1)主数据文件逻辑名为mn5_data,物理文件名为'd:\mn\mn5.mdf',存储空间初始大小为10MB,最大存储空间为不限制,文件增长量为2MB; (2)数据日志文件逻辑名为mn5_log,物理文件名为'd:\mn\mn5_log.ldf',存储空间初始大小为5MB,最大存储空间为10MB,文件增长量为5%。 create database mn5 on ( name=mn5_data,filename='d:\mn\mn5.mdf',size=10,maxsize=unlimited,filegrowth=2) log on ( name='mn5_log',filename='d:\mn\mn5_log.ldf',size=5,maxsize=10,filegrowth=5%)
4.2.3 使用查询分析器建立数据库 【例4-6】 创建一个数据库mn6,其中: 4.2.3 使用查询分析器建立数据库 【例4-6】 创建一个数据库mn6,其中: (1)主数据文件逻辑名为mn6a_data,物理文件名为'd:\mn\mn6a.mdf',存储空间初始大小为默认值,最大存储空间为不限制,文件增长量为2MB; (2)次数据文件逻辑名为mn6b_data,物理文件名为'd:\mn\mn6b.ndf',存储空间初始大小为默认值,最大存储空间为不限制,文件增长量为2MB; (3)数据日志文件1逻辑名为mn6a_log,物理文件名为'd:\mn\mn6a_log.ldf',存储空间初始大小为5MB,最大存储空间为10MB,文件增长量为5%; (4)数据日志文件2逻辑名为mn6b_log,物理文件名为'd:\mn\mn6b_log.ldf',存储空间初始大小为5MB,最大存储空间为10MB,文件增长量为5%。 create database mn6 on ( name=mn6a_data,filename='d:\mn\mn6a.mdf',maxsize=unlimited,filegrowth=2 ), (name=mn6b_data,filename='d:\mn\mn6b.ndf',maxsize=unlimited,filegrowth=2 ) log on ( name='mn6a_log',filename='d:\mn\mn6a_log.ldf',size=5,maxsize=10,filegrowth=5%), (name='mn6b_log',filename='d:\mn\mn6b_log.ldf',size=5,maxsize=10,filegrowth=5%)
4.2.3 使用查询分析器建立数据库 注意: (1)关键字on引导的是数据文件,而关键字log on 引导的是事务日志文件; 4.2.3 使用查询分析器建立数据库 注意: (1)关键字on引导的是数据文件,而关键字log on 引导的是事务日志文件; (2)每一个文件的属性信息单独包含在一对括号(())内,各属性之间用逗号(,)分割; (3)同类型的文件之间用逗号(,)分割。
4.2.3 使用查询分析器建立数据库 【例4-7】 创建一个数据库mn7,包含一个主文件组和两个次文件组,其中: 4.2.3 使用查询分析器建立数据库 【例4-7】 创建一个数据库mn7,包含一个主文件组和两个次文件组,其中: (1)主数据文件逻辑名为mn7a_data,物理文件名为'd:\mn\mn7a.mdf',其它取默认值; (2)次数据文件逻辑名1为mn7b_data,物理文件名为'd:\mn\mn7b.ndf',其它取默认值,存放于文件组group1; (3)次数据文件逻辑名2为mn7c_data,物理文件名为'd:\mn\mn7c.ndf',其它取默认值,存放于文件组group1; (4)次数据文件逻辑名3为mn7d_data,物理文件名为'd:\mn\mn7d.ndf',其它取默认值,存放于文件组group2; (5)数据日志文件1逻辑名为mn7a_log,物理文件名为'd:\mn\mn7a_log.ldf',存储空间初始大小为5MB,最大存储空间为10MB,文件增长量为5%; (6)数据日志文件2逻辑名为mn7b_log,物理文件名为'd:\mn\mn7b_log.ldf',存储空间初始大小为5MB,最大存储空间为10MB,文件增长量为5%。
4.2.3 使用查询分析器建立数据库 create database mn7 on primary 4.2.3 使用查询分析器建立数据库 create database mn7 on primary (name=mn7a_data,filename='d:\mn\mn7a.mdf'), filegroup group1 (name=mn7b_data,filename='d:\mn\mn7b.ndf'), (name=mn7c_data,filename='d:\mn\mn7c.ndf'), filegroup group2 (name=mn7d_data,filename='d:\mn\mn7d.ndf') log on (name='mn7a_log',filename='d:\mn\mn7a_log.ldf',maxsize=10,filegrowth=5% ), (name='mn7b_log',filename='d:\mn\mn7b_log.ldf',maxsize=10,filegrowth=5% )
4.3 数据库的修改 修改数据库的过程实质就是对数据库中的数据文件、日志文件和文件组的增加、删除和修改(相关属性)。修改数据库既可以使用企业管理器,也可以使用T-SQL语句。 4.3.1 利用企业管理器修改 4.3.2 利用T-SQL语句修改
4.3.1 利用企业管理器修改 数据库创建后,用户可以自行查看和修改数据库属性,通过企业管理器查看、修改数据库的步骤如下: 4.3.1 利用企业管理器修改 数据库创建后,用户可以自行查看和修改数据库属性,通过企业管理器查看、修改数据库的步骤如下: (1)在企业管理器中,展开SQL Server的实例下的“数据库”,右击需要查看属性的数据库如jxgl,在菜单中选择“属性”命令,弹出如图4-17所示的“常规”对话框。在常规选项卡中,用户可以查看数据库的名称、状态、所有者、创建日期、大小等基本信息。 (2)单击“数据文件”选项卡,弹出如图4-18所示的“数据文件”对话框,用户可以查看、添加、删除数据文件,以及修改数据文件属性,但不能修改数据文件名及存储位置。
图4-17 “数据库”属性的“常规”界面 图4-18 “数据库”属性的“数据文件”界面 4.3.1 利用企业管理器修改 图4-17 “数据库”属性的“常规”界面 图4-18 “数据库”属性的“数据文件”界面
图4-19 “数据库”属性的“事务日志”界面 图4-20 “数据库”属性的“文件组”界面 4.3.1 利用企业管理器修改 (3)单击“事务日志”选项卡,弹出如图4-19所示的“事务日志文件”对话框。用户可以查看、添加、删除事务日志文件,以及修改修改事务日志文件属性。 (4)单击“文件组”选项卡,弹出如图4-20所示的“文件组”对话框。用户可以查看、添加、删除文件组。 图4-19 “数据库”属性的“事务日志”界面 图4-20 “数据库”属性的“文件组”界面
图4-21 “数据库”属性的“选项”界面 图4-22 “数据库”属性的“权限”界面 4.3.1 利用企业管理器修改 (5)单击“选项”选项卡,用户可以查看、添加、删除选项信息,如图4-21所示。 (6)单击“权限”选项卡,用户可以查看、添加、删除用户角色信息,如图4-22所示。 图4-21 “数据库”属性的“选项”界面 图4-22 “数据库”属性的“权限”界面
4.3.2 利用T-SQL语句修改 使用T-SQL语句修改数据库的语法格式如下: 其中, <文件说明>::= (name=逻辑文件名 [,size=初始大小] [,maxsize={最大限制|unlimited}] [,filegrowth=文件增长量]) [,…n]
4.3.2 利用T-SQL语句修改 说明: (1)<数据库名>:是要更改的数据库名称; (2)add file:添加辅助数据文件,该文件属性由后面的<文件说明>指定; (3)add log file:添加新的日志文件,该文件属性由后面的<文件说明>指定; (4)remove file:删除辅助数据文件和日志文件及其描述; (5)add filegroup:添加次要文件组; (6)remove filegroup:删除辅文件组,删除文件组之前,要保证文件组为空,否则先删除这个文件组中的文件; (7)modify file:修改name指定文件的相关属性,包括size,maxsize,filegrowth; (8)modify name:修改数据库名,即重命名数据库; (9)modify filegroup:修改文件组名称或文件组属性,文件组属性取值如表4-1所示。
4.3.2 利用T-SQL语句修改 表4-1 文件组属性取值及其含义 名称 功能 Readonly 表4-1 文件组属性取值及其含义 名称 功能 Readonly 只读,不允许更改文件组中的对象,主文件组不能设置只读 Readwrite 读写,允许更改文件组中的对象,具有排他权限的用户才能设置文件组读写权限 Default 默认文件组,将文件组设置为默认文件组
4.3.2 利用T-SQL语句修改 【例4-8】 将mn4的主数据文件的最大大小改为10MB,增长方式改为2MB。 alter database mn4 modify file (name=mn4_data,maxsize=10) go alter database mn4 modify file (name=mn4_data,filegrowth=2)
4.3.2 利用T-SQL语句修改 【例4-9】 添加一个包含两个数据文件的文件组group1和一个日志文件到mn4数据库中。 alter database mn4 add filegroup group1 Go alter database mn4 add file (name=mn4a_data,filename='d:\mn\mn4a.ndf') to filegroup group1 add file (name=mn4b_data,filename='d:\mn\mn4b.ndf') to filegroup group1 add log file (name=mn4a_log,filename='d:\mn\mn4a.ldf')
4.3.2 利用T-SQL语句修改 【例4-10】 从mn4中删除文件组group1。注意不能删除主文件组和有数据文件的文件组。 alter database mn4 remove file 'mn4a_data' go remove file 'mn4b_data' remove filegroup group1
4.3.2 利用T-SQL语句修改 【例4-11】 从数据库mn4中删除一个日志文件,并将数据库改名moni4。注意不能删除主日志文件。 alter database mn4 remove file 'mn4_log' go modify name=moni4 注意:更改数据库的名称也还可以使用系统存储过程sp_renamedb,如本例更改数据库的名称,也可以使用下列语句: exec sp_renamedb 'mn3','moni3'
4.4 数据库的删除 当数据库及其中的数据失去利用价值后,可以删除数据库以释放被占用的磁盘空间。数据库被删除后,数据库中的所有数据和数据库使用的所有磁盘文件会一道被删除。删除数据库的方法有两种:利用企业管理器和利用T-SQL语句。 4.4.1 利用企业管理器删除 4.4.2 利用T-SQL语句删除
4.4.1 利用企业管理器删除 利用企业管理删除数据库的方法如下: 4.4.1 利用企业管理器删除 利用企业管理删除数据库的方法如下: 在企业管理器中,展开控制台根目录的树形目录,直至选择要删除的数据库。然后直接按键盘的“del”键,或者执行“操作”→“删除”命令,或用鼠标右击要删除的数据库,在弹出的快捷菜单中选择“删除”命令,弹出如图4-23所示的“删除数据库”对话框,单击确定即可。 图4-23 “删除数据库”对话框
4.4.2 利用T-SQL语句删除 语法格式如下: drop database <数据库名称> 【例4-12】 删除一个数据库moni3。 drop database moni3 注意:也可以使用系统存储过程exec sp_dbremove <数据库名>实现删除指定的数据。
4.5 数据库的压缩 压缩数据库是指将分配给数据库多余的存储空间释放出来,以节约磁盘空间。压缩数据库通常也有两种方法,即用企业管理器和T-SQL语句。T-SQL语句的命令有2种压缩方法: (1)压缩数据库:dbcc shrinkdatabase; (2)压缩数据库中的数据文件:dbcc shrinkfile; 4.5.1 压缩数据库 4.5.2 压缩数据库文件
4.5.1 压缩数据库 压缩数据库的语法格式如下: 格式:dbcc shrinkdatabase (数据库名[,压缩目标百分比数值][,{notruncate | truncateonly}]) 功能:将指定的数据库压缩到原来的百分比数。 说明: (1)数据库名:指定要压缩的数据库名称; (2)压缩目标百分比数值:可选参数,指明被压缩的文件为原来的文件百分比大小; (3)notruncate:保留数据文件中的空闲空间; (4)truncateonly:将数据文件中的空闲空间返回给操作系统。 【例4-13】 压缩数据库mn5为原来的10%。 dbcc shrinkdatabase (mn5,10)
4.5.2 压缩数据库文件 压缩数据库文件的语法格式如下: 4.5.2 压缩数据库文件 压缩数据库文件的语法格式如下: dbcc shrinkfile({file_name|file_id}{[,target_size]|[,{emptyfile|notruncate|truncateonly}]}) 功能:压缩当前数据库中的指定的数据文件到一具体目标大小。 说明: (1)file_id:指定要压缩的文件的鉴别号(Identification number,即ID)。文件的ID号可以通过函数file_id()或系统存储过程Sp_helpdb来得到; (2)target_size:指定文件压缩后的大小,以MB为单位。如果不指定此选项,SQL Server 就会尽最大可能地缩减文件; (3)emptyfile:指明此文件不再使用,将移动所有在此文件中的数据到同一文件组中的其它文件中去。执行带此参数的命令后,此文件就可以用alter database命令来删除了; (4)参数notruncate 和truncateonly 与dbcc shrinkdatabase 命令中的含义相同。 【例4-14】 压缩数据库mn5中的数据库文件mn5_data的大小到5MB。 use mn5 dbcc shrinkfile (mn5_data,5)
4.6 数据库附加和分离 数据库文件既可以在服务器停止的状态下象普通文件一样实现转移,也可以在服务器启动的状态下实现转移,分离和附加就是在不停止服务器的基础上,将数据库从一台计算机移到另一台计算机的方法,从而实现在另一台计算机上使用和管理该数据库了。 4.6.1 分离 4.6.2 附加
4.6.1 分离 分离是使数据库与当前SQL Server服务器脱离关系。与删除数据库的区别在于:数据库分离后,数据库文件(.mdf、.ndf和.ldf文件)仍然存储在当前服务器所在的计算机硬盘上,只不过用户无法在当前服务器上使用该数据库。数据库只有脱离了SQL Server服务器,才能被自由复制和转移到其它计算机上,常利用数据库分离方法实现数据库文件位置的转移。 利用企业管理分离数据库的方法如下: (1)在企业管理中展开“控制台目录”,直到出现要分离的数据库,如数据库名称“mn5”,右击该数据库的名称,弹出快捷菜单,选择“所有任务”→“分离数据库”,如图4-24所示。 (2)单击后,弹出“分离数据库”对话框,如图4-25所示。
图4-24 “控制台目录”对话框 图4-25 “分离数据库”对话框 4.6.1 分离 图4-24 “控制台目录”对话框 图4-25 “分离数据库”对话框
4.6.1 分离 (3)查看“数据库状态”中的“使用本地数据库的连接”,若不为0,则单击“清除”按钮,使其值为0,然后单击“确定”按钮,弹出“分离数据库顺利完成”对话框,如图4-26所示。继续单击“确定”按钮即可返回企业管理器,数据库mn5已经消失。 图4-26 “分离数据库顺利完成”对话框 图4-26 “分离数据库顺利完成”对话框
4.6.2 附加 附加是将数据库与当前SQL Server服务器建立关联。数据库只有附加到SQL Server服务器上,才能被用户进一步操作。 利用企业管理附加数据库的方法如下: (1)在企业管理中展开“控制台目录”,直到出现“数据库”目录,右击“数据库”节点,弹出快捷菜单,选择“所有任务”→“附加数据库”,如图4-27所示。 (2)单击后,弹出“附加数据库”对话框①,如图4-28所示。
图4-27 “控制台目录”对话框 图4-28 “附加数据库”对话框 ① 4.6.2 附加 图4-27 “控制台目录”对话框 图4-28 “附加数据库”对话框 ①
4.6.2 附加 (3)单击“验证”左侧的浏览按钮,搜索要附加数据库的MDF文件,选中正确的MDF文件(如mn5.mdf)后,数据库中所有文件自动进入“附加数据库”对话框②中,如图4-29所示。 注意:如果选择不合适的文件,会弹出另一对话框,给予提示信息:“所绑定的文件不是有效的SQL Server数据库文件。” (4)继续单击“确定”按钮,弹出“附加数据库顺利完成”提示对话框,如图4-30所示。 图4-29 “控制台目录”对话框② 图4-30 “附加数据库顺利完成”对话框