实验三 数据库恢复技术

【实验目的】

1、在掌握事务的概念基础上,理解事务特性;

2、掌握数据库恢复原理;

3、熟悉SQL SERVER 的基本恢复技术。

【实验性质】

验证性实验

【实验步骤】

1、设计一个事务的运行过程,观察事务运行期间的封锁及其含义。

(1)创建数据库qixin,创建表s。

create database qixin
use qixin

create table s
(
sno        char(2),
sname    varchar(6) not null,
status    int,
city    varchar(6),
primary key (sno)
)

insert into s values('S1','竟仪',20,'天津')
insert into s values('S2','盛锡',10,'北京')
insert into s values('S3','东方红',30,'北京')
insert into s values('S4','丰泰盛',20,'天津')
insert into s values('S5','为民',30,'上海')

(2)在“查询分析器”的一个连接窗口(连接1)中,运行事务,见下图。

 

(3)在“查询分析器”新建一个连接窗口(“文件”->“连接”,连接2),执行操作,见下图。

 

(4)在连接1窗口执行commit,观察连接2窗口,见下图。

 

分析原因并解释。

提示:

可以考虑s表的加锁情况。观察s表的加锁情况,根据锁的相容矩阵可以得出结论。

观察s表的加锁方法有:

(1)sp_lock

通过在master数据库,执行系统存储过程sp_lock,观察s表的加锁情况:

USE master

EXEC sp_lock

(2)企业管理器

通过“企业管理器”-> “管理” -> “当前活动”-> “锁/进程ID”,见下图。

 

详细内容参阅MS SQL SERVER“联机丛书”中“访问和更改关系数据”->“事务”、“访问和更改关系数据”-> “锁定”。

2、阅读MS SQL SERVER“联机丛书”相关内容,掌握SQL SERVER的两种备份与恢复技术。

(1)通过查询分析器进行

---删除备份设备
exec sp_dropdevice 'qixin_bak'

--创建一个备份设备qixin_bak
EXEC sp_addumpdevice 'disk', 'qixin_bak','c:\qixin_bak.bak'

-- 备份qixin数据库
-- Specify the logical backup device.
BACKUP DATABASE qixin TO qixin_bak
-- Or, specify the physical backup device.
BACKUP DATABASE qixin TO DISK = 'c:\qixin_bak.bak'

--恢复数据库

RESTORE DATABASE qixin FROM qixin_bak

RESTORE DATABASE qixin FROM qixin_bak
   WITH MOVE 'qixin' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\qixin.mdf',
   MOVE 'qixin_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\qixin_log.ldf'

(2)利用图形化企业管理器进行

打开企业管理器,选择“管理”→备份,右键选择“新建备份设备”,见下图。

 



选择“管理”→备份,右键选择“备份数据库...”,见下图。

 



还原数据库时,选择要还原的数据库qixin,然后右键选择“所有任务”→“还原数据库”,见下图。

 



3、设计一个事务的运行过程,观察事务运行期间的数据库转储的情况,并总结数据库的动态转储特点。

(1)在“查询分析器”的一个连接窗口(连接1)中,运行事务,注意数据库选择qixin,见下图。

 

(2)备份数据库qixin,见下图。

 

(3)恢复上述备份为数据库qixin1,执行查询s操作。

新建一个数据库qixin1,然后还原备份内容到qixin1,在选项卡中选择“在现有数据库上强制还原”,见下图。

 


(4)在连接1窗口执行commit/Rollback,与(3)的查询结果进行比较并分析原因。见下图。

posted @ 2007-11-12 11:20  齐心  Views(1489)  Comments(0Edit  收藏  举报