12009-7-28 Information College · ChangJun
第 4章 数据库管理
22009-7-28 Information College · ChangJun
4.1 文件与文件组
4.2 创建数据库
4.3 查看数据库信息
4.4 删除数据库
4.5 修改数据库
4.6 数据库的存储结构
4.7 数据库的备份和恢复实验一 数据库的建立与维护
32009-7-28 Information College · ChangJun
4.1 文件与文件组
在 SQL Server 中数据库是由 数据文件 和 事务日志文件 组成的。
一个数据库至少应包含一个数据文件和一个事务日志文件。
数据文件必须放在 文件组 中。
42009-7-28 Information College · ChangJun
4.1.1 数据文件( Data File)
数据文件是存放数据库数据和数据库对象的文件。
l 一个数据库可以有一个或多个数据文件。
l 一个数据文件只属于一个数据库。
52009-7-28 Information College · ChangJun
有一个文件被定义为主数据文件( Primary
Data File),扩展名为 mdf,它用来存储数据库的启动信息和部分或全部数据。一个数据库只能有一个主数据文件。
当有多个数据文件时:
其它数据文件被称为次数据文件
( Secondary Data File),扩展名为 ndf,用来存储主文件没存储的其它数据。
62009-7-28 Information College · ChangJun
2、可以将数据文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取,提高了数据处理的效率,这对于服务器型的计算机尤为有用。
采用多个数据文件来存储数据的优点体现在:
1、数据文件可以不断扩充而不受操作系统文件大小的限制。
72009-7-28 Information College · ChangJun
4.1.2 事务日志文件( Transaction Log File)
SQL Server 有个特点,它在执行数据更改时会设置一个开始点和一个结束点,如果尚未到达结束点就因某种原因使操作中断,则在 SQL
Server 重新启动时会自动还原已修改的数据使其返回未被修改的状态,这就是事务。
事务日志文件是用来记录数据库更新情况的文件,扩展名为 ldf。
例如,使用 INSERT,UPDATE,DELETE 等对数据库进行更改的操作都会记录在此文件中,而如 SELECT 等对数据库内容不会有影响的操作则不会记录在案。
82009-7-28 Information College · ChangJun
l 一个数据库可以有一个或多个事务日志文件。
l SQL Server 中采用,Write-Ahead(提前写),方式的事务,即对数据库的修改先写入事务日志中,再写入数据库。其具体操作是:
(1) 系统先将更改操作写入事务日志中。
(2) 再更改存储在计算机缓存中的数据,为了提高执行效率,此更改不会立即写到硬盘中的数据库,
而是由系统以固定的时间间隔执行 CHECKPOINT 命令,将更改过的数据批量写入硬盘。
(3) 当数据库破坏时可以用事务日志还原数据库内容。
92009-7-28 Information College · ChangJun
4.1.3 文件组( File Group)
文件组是将多个数据库文件集合起来形成的一个整体,每个文件组有一个组名。
SQL Server 2000提供了三种文件组类型:
l 主文件组包含了所有的系统表、主数据库文件和未指定组的其它文件。。
l 自定义文件组
l 默认文件组一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用。如果没有指定数据库对象放在哪一个文件组中,就会将它放在缺省文件组中。如果没有指定缺省文件组,则主文件组为缺省文件组。
102009-7-28 Information College · ChangJun
4.2.1 用 Enterprise Manager 创建数据库步骤见教材 P126
4.2.2 用 Query Analyzer ( T-SQL语言 ) 创建数据库
create database 数据库名详细格式见 P128
4.2 创建数据库
112009-7-28 Information College · ChangJun
4.3.1 用 Enterprise Manager查看数据库信息
SQL Server 提供了目录树的浏览方式,使得浏览数据库信息非常方便、快捷。在
Enterprise Manager 窗口中查看数据库信息的方法如下:
方法 1:
在 Enterprise Manager 窗口中的左侧目录树窗口中,展开,数据库,文件夹,在某个数据库名称上单击右键,在出现的快捷菜单中单击
,查看,,,任务板,。
4.3 查看数据库信息
122009-7-28 Information College · ChangJun
方法 2:
在 Enterprise Manager 窗口中的左侧目录树窗口中,展开,数据库,文件夹,单击某个数据库名称,然后单击,查看,菜单,在其下拉菜单中单击,任务板,。
操作完成后,在 Enterprise Manager窗口右侧的,任务板,窗口中看到数据库的,常规,信息,,表,信息和,向导,信息。
在打开数据库文件夹目录树后,可以选择各种数据库对象进行信息浏览。
132009-7-28 Information College · ChangJun
4.3.2 用系统存储过程显示数据库信息
SQL Server 提供了许多很有用的系统存储过程,可以用它们来得到许多从 Enterprise
Manager 界面中所不易或不能看到的信息。
可以把存储过程当作函数或命令来用。
142009-7-28 Information College · ChangJun
1、用系统存储过程显示数据库结构可以使用系统提供的系统存储过程
Sp_helpdb 来显示数据库结构,其语法如下:
sp_helpdb [[@dbname=] ‘name’]
使用 Sp_helpdb 系统存储过程可以显示指定数据库的信息。
如果不指定 [@dbname=],‘ name’子句则会显示在 master.dbo.sysdatabases 表中存储的所有数据库信息,命令执行成功会返回 0,否则返回 1。
如:显示 Northwind 数据库的信息。
exec sp_helpdb Northwind
152009-7-28 Information College · ChangJun
2、用系统存储过程显示文件信息可以使用系统提供的系统存储过程
Sp_helpfile 来显示当前数据库中的文件信息,
其语法如下:
sp_helpfile [[@filename =] ‘name’]
如果不指定文件名称,则会显示当前数据库中所有的文件信息。命令执行成功会返回 0,否则返回 1。
如:显示 Northwind数据库中 northwind文件的信息。
use Northwind
go
exec sp_helpfile northwind
162009-7-28 Information College · ChangJun
3、用系统存储过程显示文件组信息可以使用系统提供的系统存储过程
Sp_helpfilegroup 来显示当前数据库中文件组信息,其语法如下:
sp_helpfilegroup [[@filegroupname =] ‘name’]
如果不指定文件组名称,则会显示当前数据库中所有的文件组。命令执行成功会返回 0。否则返回 1。
如:显示 Northwind数据库中的所有文件组信息。
use Northwind
exec sp_helpfilegroup
172009-7-28 Information College · ChangJun
4.4.1 用 Enterprise Manager 删除数据库在 Enterprise Manager 中在所要删除的数据库上单击右键,从快捷菜单中选择,删除,选项即可删除数据库。也可以选择数据库文件夹或图标后从工具栏中选择图标来删除数据库。系统会提示确认是否要删除数据库。
删除数据库一定要慎重。因为删除数据库后,
与此数据库有关联的数据库文件和事务日志文件都会被删除,存储在系统数据库中的关于该数据库的所有信息也会被删除。
4.4 删除数据库
182009-7-28 Information College · ChangJun
4.4.2 用 DROP DATABASE 命令删除数据库
DROP DATABASE 命令可以从 SQL Server 中一次删除一个或几个数据库。
数据库所有者 DBO 和数据库管理员 DBA 才有权执行此命令。
如:删除数据库 study。
drop database study
192009-7-28 Information College · ChangJun
4.5.1 更改数据库名使用系统存储过程 Sp_renamedb重命名数据库,其语法如下:
sp_renamedb [@old_name =] 'old_name',
[@new_name =] 'new_name‘
如:假设 study数据库已存在,更改 study数据库的名称为 Student。
exec sp_renamedb 'study','Student'
4.5 修改数据库
202009-7-28 Information College · ChangJun
4.5.2 修改数据库选项可以在 Enterprise Manager 中利用数据库属性设置数据库选项。也可以用系统存储过程
sp_dboption来修改。其语法如下:
sp_dboption[@dbname=],[@optname][,@optvalue]
[@optname]:表示要查看或修改的选项,如果不指定该选项则返回该数据库所有当前值为 on的选项。
[@optvalue]:表示指定选项的值,可以表示为 True/False或 OFF/ON,如果不指定该选项则返回指定选项的当前值。
如:修改 Northwind数据库中的 single-user
选项为 False。
EXEC sp_dboption ’Northwind’,’single-
user’,’False’
212009-7-28 Information College · ChangJun
4.5.3 更改文件及其属性可以在 Enterprise Manager 中利用数据库属性设置更改数据库文件和事务日志文件。也可以用 ALTER DATABASE 命令来更改数据库。
ALTER DATABASE 命令可以增加或删除数据库中的文件也可以修改文件的属性;
如:修改 Northwind数据库中的 Northwind
文件增容方式为一次增加 2MB。
alter database Northwind
modify file
( name = Northwind,
filegrowth = 2mb)
222009-7-28 Information College · ChangJun
在 SQL Server
中,数据存储的基本单位是页,页的大小是 8 KB 。其结构如图:
,页头
,数据行
,行偏移数组
4.6 数据库的存储结构
232009-7-28 Information College · ChangJun
1、页头每页的开始部分是 96 字节的页头,用于存储该页的信息,如数据库中该页的文件号和页号、页的可用空间量、该页所属对象的 ID等属性。
2、数据行紧接着页头的就是存储表中真正数据行的区域,
一行内最多包含的数据量是 8060 字节,行不能跨页,不包括 text,ntext 和 image 数据(它们有自己单独的页)。页内数据行的多少依赖于表的结构和要存储的数据(列是定长还是变长),但每一页总是存储尽可能多的行,这样可以减少 I/O的次数并提高缓存的命中率。
242009-7-28 Information College · ChangJun
3、行偏移数组在页尾有一个行偏移表。在行偏移表中,页上的每一行都有一个两字节的条目,
每个条目记录那一行的第一个字节与页首的距离。行偏移表中的条目序列与页中行的序列相反。
查看数据页的命令:
DBCC PAGE
252009-7-28 Information College · ChangJun
4.7.1 基本概念
1、备份的重要性造成数据损失的因素:
l 存储介质故障
l 用户的错误操作
l 服务器的彻底崩溃
l 自然因素另外,也可出于其它目的备份和还原数据库,
如将数据库从一台服务器复制到另一台服务器。
通过备份一台计算机上的数据库,再将该数据库还原到另一台计算机上,可以快速容易地生成数据库的复本。
4.7 数据库的备份和恢复
262009-7-28 Information College · ChangJun
2、备份设备分类备份设备是指在存储介质上的 文件,与操作系统的文件一样。
从备份的存储方式:
l 磁盘备份设备
l 磁带备份设备
l 命名管道设备从备份设备的标识:
l 物理设备名称如,c:\chj\bkpubs.bak
l 逻辑设备即是物理设备的别名
272009-7-28 Information College · ChangJun
3、备份策略
l 完整数据库备份数据库的完整复本。
l 事务日志备份仅复制事务日志。
l 差异备份仅复制自上一次完整数据库备份之后修改过的数据库页。
l 文件或文件组对个别文件进行备份。
282009-7-28 Information College · ChangJun
4、恢复策略
l 完全数据非常重要并且必须能够恢复到故障点。记录所有的数据修改。
l 大容量日志记录只能恢复到上一次数据库或日志备份的末尾。
l 简单自上次备份后所做的所有数据更改都是可替代的,或是可重做的。记录开销最小,但不能恢复自上次备份结束后的内容。
292009-7-28 Information College · ChangJun
4.7.2 执行数据备份和还原
1,创建数据库备份设备
l 企业管理器见教材 P169
l Transact-SQL
将备份设备添加到 SQL Server 的存储过程,
sp_addumpdevice
下面的示例添加一个名为 MYDISKDUMP 的磁盘备份设备,其物理名称为 C:\Dump\Dump1.bak。
USE master
EXEC sp_addumpdevice 'disk',
'mydiskdump','c:\dump\dump1.bak'
302009-7-28 Information College · ChangJun
2、备份数据库
l 企业管理器见教材 P170
l Transact-SQL
备份整个数据库、事务日志,或者备份一个或多个文件或文件组:
BACKUP DATABASE|LOG
见教材 P174
312009-7-28 Information College · ChangJun
下例创建了一个数据库和日志的完整备份。
将数据库备份到称为 MyNwind_2 的逻辑备份设备上,然后将日志备份到称为 MyNwindLog1 的逻辑备份设备上。
说明 创建逻辑备份设备需要一次完成。
-- Create the backup device for the full
MyNwind backup.
USE master
EXEC sp_addumpdevice 'disk','MyNwind_2',
'c:\Program Files\Microsoft SQL
Server\MSSQL\BACKUP\MyNwind_2.dat'
322009-7-28 Information College · ChangJun
--Create the log backup device.
USE master
EXEC sp_addumpdevice 'disk','MyNwindLog1',
'c:\Program Files\Microsoft SQL
Server\MSSQL\BACKUP\MyNwindLog1.dat‘
-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_2
-- Update activity has occurred since the
full database backup.
-- Back up the log of the MyNwind database.
BACKUP LOG MyNwind TO MyNwindLog1
332009-7-28 Information College · ChangJun
3、恢复(还原)数据库
l 企业管理器见教材 P175
l Transact-SQL
还原使用 BACKUP 命令所做的备份:
RESTORE DATABASE|LOG
见教材 P179
下例显示还原完整数据库备份。
RESTORE DATABASE MyNwind
FROM MyNwind_1